2016-04-25 13 views
4

代わりにthis SO Q & Aを探していましたが、代わりにabstract classという基数を持つことができたのでしょうか? interfaceではなく、親コンポーネントが@ViewChildデコレータを使用してアクセスできる子コンポーネントのベースクラスの実装方法を、Angular2に変更することは可能ですか?Angular2 - TypeView基本抽象クラスの@ViewChild

理想的には、親ルータを呼び出すことができるように、親コンポーネントRouterを介してインスタンス化される子コンポーネントの手段が必要です。それは意味がありますか?私は子供がparentRouter.navigate(["SomeOtherRoute", { args: 'blah' }]);に電話できるようにしたい。

私の最初のアプローチは、親コンポーネントが@ViewChildデコレータを介して参照を取得する基本クラスを実装することでした。親はナビゲーションイベントを呼び出そうとする子の動作にsubscribeを割り当て、ハンドラはrouter.navigateを呼び出す(親レベルにルータがあるため)。

答えて

4

@ViewChildren()または同様のデコレータを使用してコンポーネントのサブクラスを照会することはできません。

テンプレート変数と具体的なコンポーネントおよびディレクティブ型(実際にはビューのコンポーネントとしてインスタンス化される型)のみがサポートされています。

+0

ありがとうございます!次に、https://angular.io/docs/ts/latest/cookbook/component-communication.html#!#bidirectional-serviceで定義されているサービスアプローチを実装します。 –

+0

これは通常、好ましい方法です。 –

0

はい!それは可能です、そして、私はそれがあなたのユースケースのためにサービスが好ましいと思いますが、それは場合によってはよりきれいになることがわかります。インターフェイスに関するオリジナルの質問に対する私の答えを見てください。私は多分それをここに掲示していたはずです。

https://stackoverflow.com/a/41151492/4293638

関連する問題