2

我正在尝试使用 ngrx 制作语言管道。

组件.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,还是我必须手动执行?

4

2 回答 2

2

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

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

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

在此处查找有关异步管道的更多详细信息

于 2020-08-06T09:41:32.857 回答
2

是的,如果实例已更改,async它将处理取消订阅。Observable

这是关于 stackblitz 的运行示例。

使用异步订阅的每个输入更改管道返回新的 observable

于 2020-08-06T10:07:24.987 回答