私は次のディレクティブ<child-component [hidden]="!visible"></child-component>
を持つ親コンポーネントを持っています。当初、このディレクティブに関連付けられている子コンポーネントは非表示になっていて、イベントが発生した後に表示させたいので、親コンポーネントのボタン<button (click)="showMe()">Show child</button>
を使用してこのプロパティを変更しています。子コンポーネントから角2のディレクティブ属性を変更します
export class ChildComponent {
constructor(private _element: ElementRef, private _renderer: Renderer) {}
hideMe() {
let el = this._element.nativeElement);
this._renderer.setElementStyle(el, 'visibility', 'hidden');
}
}
私はこの部分についてはよく分からない:
export class App {
constructor() {
this.visible = false;
}
showMe() {
this.visible = true;
}
}
問題は、これは子コンポーネントを示していたら、私は再びそれを隠すために、子コンポーネントにボタンを提供する必要がある、ということです少なくともそれは動作します。今、child-component
指示のプロパティhidden
を再度変更したい場合はどうなりますか? showMe()を呼び出すことは機能しません。おそらく、適用されるスタイルの何らかの優先順位のためです。
これを行う正しい方法は何ですか?
Demo:最初に「子を表示」をクリックし、次に「隠す」をクリックしてから「子を表示」をもう一度クリックしてみてください。クリックされた最後のボタンは機能しません。
おかげ
ありがとうございます。ドキュメンテーションを読んだら、あなたがしていることを理解していると思います。唯一の問題は、他のものを壊すことなく、隠しとして子コンポーネントを開始できないことです。その場合の解決策はありますか? –
答えを更新しました。 '[hidden] =" true "'を追加するだけで、最初は非表示にする必要があります。 –
もちろん:-)ありがとう。ちなみに、これは子コンポーネントと親コンポーネントの間の通信を実現する最も簡単な方法ですか? –