2016-04-10 11 views
0

これは、クックブックの例に接続されているサービスを介して通信する:直接接続されていないコンポーネントが通信できるようにhttps://angular.io/docs/ts/latest/cookbook/component-communication.html#!#bidirectional-service角度2 - 親と子は

Iは、観察してサービスを行いました。 観測可能と聞いているにフックされ、実際のがある場合に

すべてがうまく動作します。私が聞いている"No provider for service")なしを作成しようとすると

私の問題が表示されます。

料理書のように、サービスは、providers: [MissionService]を聞いているコンポーネントの内部のプロバイダでなければなりません。

答えて

1

これは、階層インジェクタを使用してプロバイダを活用することができないためです。

この作品を作るための最も簡単な方法は、アプリケーションをブートストラップする場合、サービスのプロバイダを定義することです:

bootstrap(AppComponent, [ MissionService ]); 

は、コンポーネントの提供者属性からサービスを削除することを忘れないでください。

これは、コンポーネントが関連するインジェクタ内のプロバイダを検索するため、コンポーネントがリンクしている場合に機能します。一致しない場合、それはその親インジェクタに見えますので、上:コンポーネントでは関係ないと定義プロバイダと

Application 
    | 
AppComponent 
    | 
ChildComponent 
    | 
SubChildComponent 

、他のコンポーネントは、それを見つけることができません。階層インジェクタに関するモードの詳細については

、あなたがこの質問を見ている可能性があり:

+0

は滑らかな説明をありがとう!ちなみに、私はAngular 2の知識について、皆さんの後ろからゆるんでいるようです。あなたはどうやってそんなに知っていますか?あなたはどこで答えを探しますか(stackoverflowは除外されますか?) –

+0

ドアステップで角2が、角4が現れました。これはまだ有効ですか? –