角度がのonDestoryイベントに電話することをいつ決定するのですか? ディレクティブでコンポーネントを切り替えると、onDestoryは呼び出されず、コンポーネントの同じインスタンスを使用しているかのようにコンポーネントの状態が維持されますか?角度2はコンポーネントに対してonDestroyを呼び出しますか?
angle(2)がコンポーネントを破棄するとき、誰が手直しできますか? *ngIf
で切り替えるときにコンポーネントの新しいインスタンスを実現する方法は?
角度がのonDestoryイベントに電話することをいつ決定するのですか? ディレクティブでコンポーネントを切り替えると、onDestoryは呼び出されず、コンポーネントの同じインスタンスを使用しているかのようにコンポーネントの状態が維持されますか?角度2はコンポーネントに対してonDestroyを呼び出しますか?
angle(2)がコンポーネントを破棄するとき、誰が手直しできますか? *ngIf
で切り替えるときにコンポーネントの新しいインスタンスを実現する方法は?
AngularでのDOM操作のほとんどは、ViewContainerRefを使用して実行されます。具体的には、この機構ngIf
によってis used internally:
private _updateView() {
...
this._viewContainer.clear();
...
this._thenViewRef =
this._viewContainer.createEmbeddedView(this._thenTemplateRef, this._context);
}
}
@Directive({selector: 'router-outlet', exportAs: 'outlet'})
export class RouterOutlet implements OnDestroy, OnInit {
constructor(..., private location: ViewContainerRef, ...)
detach(): ComponentRef<any> {
...
this.location.detach();
...
}
attach(ref: ComponentRef<any>, activatedRoute: ActivatedRoute) {
...
this.location.insert(ref.hostView);
}
viewContainer.clear()
又はviewContainer.remove(index)
方法は、関連するコンポーネントまたは(ng-template
で作成)埋め込みビューが除去されると呼ばngOnDestroy
ライフサイクルされるかたびフックが呼び出されます。
angle(2)がコンポーネントを破棄するとき、誰もが精緻化できますか?
ngIf
とngFor
のような構造のディレクティブを使用する場合は、ルータが離れて現在のrouter-outlet
ディレクティブとき、または手動で動的コンポーネントまたはviewContainerRef
を使用して埋め込まれたビューを削除するから移動したときに、発生します。
あなたがでViewContainerRef
を使用してDOM操作についての詳細を読むことができます:あなたはルートを変更したりも、あなたがの新しいインスタンスをしたい場合は、コンポーネントのonDestroyが呼び出されたセッションを閉じる史上とき
コンポーネントをトグルする際に、イベントエミッタを見て、新しいコンポーネントをうまく切り替えるようにコンポーネントをネストする必要があるかもしれません。 –
@ RahulSingh、ドキュメント参照はどこかにありますか?これについて何か参考までに見つけるのは難しいです。 –
https://angular.io/guide/lifecycle-hooks – ranakrunal9