web-dev-qa-db-ja.com

コンポーネントは自己破棄イベントを呼び出すことができます

リンクをクリックすると新しいコンポーネントを開く親コンポーネントがあります。この新しいコンポーネントには、閉じるときに閉じるメッセージを親に送信してそれ自体を破棄する閉じるボタンがあるはずです。

ngOnDestroyメソッドを使用して終了メッセージを送信できますが、子コンポーネントの破棄を呼び出す方法を教えてください。

<parent>
    <child></child> //child to be opened on click but close 
                    //event should be inside the child componenet
</parent>

ここでいくつかの概念的な間違いがある場合は修正してください。ありがとう

17
Sumit Agarwal

ユーザーがクリックしたコンポーネントを選択したAngular 2ダイナミックタブ のようにViewContainerRef.createComponent()を使用してコンポーネントを追加した場合、cmpRefを渡すとコンポーネントはそれ自体を破壊できます作成されたコンポーネント。

そうでなければ、私は方法があるとは思わない。親に値を渡すと、*ngIfは、コンポーネントを削除します。

<child *ngIf="showChild" (close)="showChild = false"></child>
class ParentComponent {
  showChild:boolean = true;
}
class ChildComponent {
  @Output() close = new EventEmitter();

  onClose() {
    this.close.emit(null);
  }
}
27

そのようなソリューションの清潔さについてはわかりませんが、私は使用しました:

this.viewContainerRef
    .element
    .nativeElement
    .parentElement
    .removeChild(this.viewContainerRef.element.nativeElement);
12
Sergiu Cosciug