簡體   English   中英

更改Angular2異步管道的訂閱

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM