2016-05-13 12 views
1

よくあるのは、plnk、http://plnkr.co/edit/y7PZONWELeG4f2Ywbw4kです。observableでメッセージを渡すことができません

@Injectable() 
export class MsgService{ 
// First solution sends nothing to the console in ChatList 
private msgSource = new Subject<string>() 

msgEvent$ = this.msgSource.asObservable() 

// Second solution -> sends 'completed' in the ChatList comp 
//chat_id; 
//msg = Observable.of(this.chat_id) 

sendMsg(id){ 
    this.msgSource.next(id) 
    //this.chat_id = id 
}} 

私は、観察可能なサービスで子から親にメッセージを渡そうとしていますが、動作しません。 https://angular.io/docs/ts/latest/cookbook/component-communication.htmlの例です(親と子はサービスを介して通信します)。私は2つのソリューションを持っています - 最初は全く手がかりを与えません。コンソールに何も渡されず、2番目にサブスクリプションが完了しましたが、完全な()メッセージは送信されませんでした。それでこの問題は何ですか?

答えて

3

コンポーネント間でサービスを共有する場合は、共通の祖先でのみサービスを提供しますが、注入するすべてのコンポーネントでは提供しません。

providers: [MsgService]に新規のという別の場所に追加すると、のインスタンスが作成されますが、共有する必要があります。

@Component({ 
    selector: 'messages', 
    template: `<div>Message from {{id}} chat</div>` 
    //providers: [MsgService] 
}) 

export class Chat{ 
関連する問題