2017-02-28 5 views
1

ボタンの(click)イベントと[disable]状態をコンポーネントでリンクすると、コンポーネントでボタンをクリックしてコンポーネント内のアクションをトリガできるようになりました。彼らは、別のコンポーネント(ルートを介してロードされて...)でお互いの隣に座っています。角2出力イベントエフェクタ

私は...この<button [disabled]='isDisabled' />ようなボタンに渡されたブール値を設定するために、親コンポーネント内の関数をトリガし、子コンポーネントから

Output()イベントを持つことができますこれは上の保つために汚いとトリッキーなようです特に、ページ上に多くの類似のものが必要な場合は...もっと良い方法はありますか?

+0

子コンポーネントからその親に '@output()'デコレータを使ってデータを渡すことは、親子ツリーが2,3レベル深いときに乱雑になることがありますが、それをシンプルにして見栄えを良くするために_communication service_を作成します。 [親と子がサービスを介して通信する]の詳細については、Angular docsのリンクです(https://angular.io/docs/ts/latest/cookbook/component-communication.html#!#bidirectional-service) – HirenParekh

答えて

0

別の@Outputプロパティを作成する方がよいでしょう。 Angularはdomノードあたり1つのリスナのみを追加します。つまり、@HostListener(click)がある場合は、DOMリスナは1つのみで、伝播を停止できるかどうかは実行順序によって異なります。 @Outputプロパティはエミッタを完全に制御します。