如果更改可观察对象,异步管道是否会自动取消订阅可观察对象?

时间:2020-08-06 09:35:17

标签: angular asynchronous observable ngrx async-pipe

我正在尝试使用ngrx创建语言管道。

component.html:

<p>{{1 | language: languageId | async }}</p>

语言管道:

constructor(private store:Store){}

  transform(resourceId: number, languageId:number): Observable<string> {
    return this.store.select(selectResource, { resourceId, languageId });
  }

我的问题是,如果我更改组件中的languageId,则管道将从存储中选择一个新的Observable,但是异步管道是否将从先前的Observable退订,还是我必须手动执行? >

2 个答案:

答案 0 :(得分:2)

异步管道订阅一个Observable或Promise,并返回它发出的最新值。

发出新值时,异步管道会将要检查的组件标记为更改

当组件被销毁时,异步管道会自动取消订阅,以避免潜在的内存泄漏。

查找有关异步管道here

的更多详细信息

答案 1 :(得分:0)

是的,如果async实例已更改,Observable将处理退订。

Here is a running example on stackblitz.

Pipe returning new observable every input change subscribed with async