2016-11-25 8 views
1

Я использую сервис с объектом как услугу связи для компонентов в моем приложении angular2.Как создать тему (rx.js) с двумя параметрами?

Вызов метода:

this.notification.create('test'); 

Услуги:

export class NotificationService { 
    private static notificationSource = new Subject<any>() 

    notiCreated$ = NotificationService.notificationSource.asObservable(); 

    create(message) { 
    NotificationService.notificationSource.next(message); 
    } 
} 

Вызывается функция:

this.subscription = notification.notiCreated$.subscribe(
    data => { 
     console.log(data); 
     this.createNotification(data, 'warning'); 
    }); 

Но я хочу передать 2 Params. И у меня появились ошибки.

Как я могу это сделать?

ответ

5

Поскольку api для next является next(value: T): void, он может принимать только один параметр. Ref: http://reactivex.io/rxjs/class/es6/Subscriber.js~Subscriber.html

В качестве временного решения можно сгруппировать сообщения внутри объекта:

this.notification.create({message1:'test', message2:'test2'}); 

и когда вы потребляете, просто выберите сообщение, Вам необходимо:

this.subscription = notification.notiCreated$.subscribe(
    data => { 
     console.log(data.message1, data.message2); 
     this.createNotification(data.message1, 'warning'); 
    }); 
+0

это невозможно сделать это с 2 параметрами? –

+0

@MaxKarpovets Нет, потому что api для 'next' является' next (value: T): void; 'поэтому он принимает только один параметр. – echonax

+1

Ты мне действительно помогаешь. благодаря –