繁体   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