[英]Change subscription of Angular2 Async Pipe
我有一種情況,我在angular2組件中使用異步管道並將可觀察到的管道傳遞給它。 很好
我想要的是稍后,當組件仍處於“活動狀態”時,即:尚未調用OnDestroy(因此已訂閱了異步管道),以取消訂閱該可觀察對象並訂閱另一個。
我該如何實現?
這是一些偽代碼來暴露這種情況:
@Component({
selector: 'pack',
template: `
<wolf *ngFor="let wolf of pack | async">
...
</wolf>
`
})
export class PackComponent implements DoCheck {
pack;
constructor(){
this.pack = Observable.of(northwesthernWolves: Wolf[])
}
onDoCheck() {
if(some condition) {
this.pack = Observable.of(redWolves: Wolf[])
}
}
}
考慮到該框架已經發布,可以安全地假設它已經解決了這一問題。 實際上是這樣的 :
...
if (obj !== this._obj) {
this._dispose();
return this.transform(obj);
}
...
當將新的observable分配給class屬性時, async
管道將自動取消訂閱舊的observable。
相反的行為會導致內存泄漏,並且可以認為是錯誤。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.