angular - 您必须取消订阅组件中的 QueryList 吗?

标签 angular rxjs observable

当使用 @ContentChildren@ViewChildren 装饰器来监听 DOM 元素的变化时。我必须取消订阅 QueryList 吗?

例如:

@Component({...})
export class ParentComponent implements AfterContentInit {
    @ContentChildren(ChildComponent)
    public children: QueryList<ChildComponent>;

    public ngAfterContentInit(): void {
        this.children.changes.subscribe(() => ....);
    }
}

以上会不会有问题?

更新:

我问的原因是我们不必取消订阅 @Output 装饰器。当组件被销毁时,它们会自动取消订阅。

我找不到任何说明这与 QueryList 相同的文档。

最佳答案

您不必取消订阅 QueryList。它为你做。

看这里: https://github.com/angular/angular/blob/7d137d7f8872a6fba72668e32f9baf2c5dcfc48b/packages/core/src/linker/query_list.ts#L115

作为一般规则,当 Observable 在组件销毁后保持事件状态时,我会取消订阅。适用于大多数场景。

关于angular - 您必须取消订阅组件中的 QueryList 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51391935/

相关文章:

rxjs - 包含确认的可观察对象模式

javascript - Angular 应用程序提取整个集合,而不是预期的有限数量的结果

swift - Rx swift : Extra argument 'onError' in call

javascript - 如何重置 Jasmine 中的 spy ?

angular - RxJS Pipe 在 Angular Resolver 中不起作用(但在 ngOnInit 中工作正常)

Angular4 Material 输入显示不正确

javascript - Angular 8/Firebase : how do I set the displayName when creating user with email and password?

带有异步 RxJS 调用的 Angular 响应式(Reactive)表单自定义验证器

Rxjs,如何将回调方法链接到 Observable?

angular - 在 Angular 2 中调用组件刷新