更改Angular2异步管道的订阅

时间:2016-10-05 20:49:40

标签: angular rxjs

我有一个案例,我在angular2组件中使用异步管道并向其传递一个observable。这很好。

我想要的是以后,虽然该组件仍处于活动状态,即:尚未调用OnDestroy(因此订阅异步管道),取消订阅该observable并订阅另一个。

我怎样才能做到这一点?

这里有一些伪代码来揭露这种情况:

@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[])
      }
    }
}

1 个答案:

答案 0 :(得分:4)

考虑到框架已经发布,可以安全地假设它已经解决了这个问题。实际上,it is so

/myproj

当新的observable分配给class属性时,旧的observable会被... if (obj !== this._obj) { this._dispose(); return this.transform(obj); } ... pipe自动取消订阅。

相反的行为会导致内存泄漏,可能会被视为错误。