2016-11-25 24 views
1

我在我的angular2應用程序中使用服務和主題作爲通信服務的組件。如何用2個參數創建主題(rx.js)?

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

但我想通過2個PARAMS:

調用方法:

this.notification.create('test'); 

服務:

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

    notiCreated$ = NotificationService.notificationSource.asObservable(); 

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

調用的函數。我有錯誤。

我該怎麼辦?

回答

5

由於next的API是next(value: T): void,它只能帶一個參數。 編號: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否,因爲'next'的api是'next(value:T):void;'所以它只需要1個參數。 – echonax

+1

你真的幫我。謝謝 –