私はポップアップコンポーネントを設計しました。それは、以下のメソッドをbackとのフロント変数にバインドされている変数を設定して表示し、非表示にすることを意図しています。Angular 2のコンポーネントは、そのメソッドを呼び出すことによって、別のコンポーネントをどのようにポップアップさせることができますか?
hide() {
this.back = this.back.replace(/[ ]?shown/, "");
this.front = this.front.replace(/[ ]?shown/, "");
}
show() {
this.back += "shown";
this.front += "shown";
}
問題は、他のコンポーネントからポップアップを呼び出すことができないようにすることです。実際、私が目指しているアプリケーションのマークアップは次のとおりです。
<navbar></navbar>
<sidebar></sidebar>
<filter></filter>
<poppy></poppy>
私はそれを呼び出す方法がわかりません。私は、ナビゲーションバーのクリックに反応して、リクエストがポップアップを引き起こすようになっていることを検知しています。
if(notImplementedYet) {
???
}
私はその問題を尋ねましたが、私は本当にそれにアプローチする適切な方法の明確なイメージを得ていません。たとえば、私はInput
とOutput
hereについて見てきましたが、私の必要性に遠隔から適用できるかどうかは判断できません。
私はまたthisを見ましたが、Angularの経験が不足している可能性がありますので、教えてくれません。また、私は親から子へ/親から子へのアプローチが非常に厄介な呼び出し構造になることを心配しています。
それは、コンポーネント間通信のためのサービスを使用するのが一般的です。 [実装例](http://stackoverflow.com/a/4204194)を参照してください。アプリ内のどのコンポーネントがサービスを介してSpinnerComponentを表示/トリガーできるかを示します。私はあなたの状況にそれを適応させることができると思います。また、[その他の技術](https://angular.io/docs/ts/latest/cookbook/component-communication.html)の公式ドキュメントのコンポーネント通信についてもチェックしてください。 – AngularChef