[英]Override ngOnDestroy
有什么解決方案可以在調用ngOnDestroy時完成可觀察性的工作? 我的意思是,當您只有一個組件實例時,創建新的子組件對我來說不是解決方案。 我試圖通過更改組件原型中的函數來覆蓋ngOnDestroy,但似乎角度收集了ngOnDestroy函數,而根本沒有使用更改過的方法。
我個人使用了這段方便的代碼https://github.com/NetanelBasal/ngx-take-until-destroy我已經做了一些研究,說實話,這種方法是我能找到的最優雅的方法
另外,您也不必取消訂閱,例如,通過使用諸如take
takeUntil
等運算符take
確保可觀察的內容完整
如果要動態創建組件,則始終可以僅將組件實例而不是“ this” untilDestroyed
到untilDestroyed
運算符中
我喜歡將一個主題僅僅用於破壞。 在ngOnDestroy中,我觸發next()和complete();
public destroy$ = new Subject<void>();
somesource$.pipe(
takeUntil(this.destroy$)
).subscribe(val => //somemething here);
ngOnDestroy():void {
this.destroy$.next();
this.destroy$.complete();
}
您可以在組件外部使用destroy $變量來查看組件是否被破壞。
someInstanceComponent.destroy$.subscribe(val => //do something);
大多數時候,我將其設為私有,因為我很少在室外使用它。
ngOnDestroy是接口,因此您可以一直覆蓋它...您想在ngOndestroy中完成從未完成的源代碼嗎? 您可以使用takeWhile並傳遞一個布爾值
// variables section
flag = true;
// somewhere when you want to subscribe
source$
.pipe(takeWhile(flag)).subscribe(()=>{});
ngDestroy(){
flag = false;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.