Angular 您必须取消订阅组件中的查询列表吗?
使用Angular 您必须取消订阅组件中的查询列表吗?,angular,rxjs,observable,Angular,Rxjs,Observable,使用@ContentChildren或@ViewChildren装饰程序侦听DOM元素的更改时。我必须取消订阅查询列表吗 例如: @Component({...}) export class ParentComponent implements AfterContentInit { @ContentChildren(ChildComponent) public children: QueryList<ChildComponent>; public ngAft
@ContentChildren
或@ViewChildren
装饰程序侦听DOM元素的更改时。我必须取消订阅查询列表吗
例如:
@Component({...})
export class ParentComponent implements AfterContentInit {
@ContentChildren(ChildComponent)
public children: QueryList<ChildComponent>;
public ngAfterContentInit(): void {
this.children.changes.subscribe(() => ....);
}
}
@组件({…})
导出类ParentComponent实现AfterContentInit{
@ContentChildren(ChildComponent)
公共儿童:QueryList;
public ngAfterContentInit():void{
this.children.changes.subscribe(()=>…);
}
}
上述情况会成为问题吗
更新:
我问的原因是我们不必取消订阅@Output
装饰器。当组件被销毁时,它们会自动取消订阅
我找不到任何说明这与QueryList
相同的文档。一般来说,当您的组件被销毁时,最好取消订阅您订阅的内容。在Angular中,可以在Ngondestory方法中执行此操作
import { Subscription } from 'rxjs';
@Component({...})
export class ParentComponent implements AfterContentInit, OnDestroy {
@ContentChildren(ChildComponent)
public children: QueryList<ChildComponent>;
private childrenSubscription: Subscription;
public ngAfterContentInit(): void {
this.childrenSubscription = this.children.changes.subscribe(() => ....);
}
public ngOnDestroy(): void {
this.childrenSubscription.unsubscribe();
}
}
从'rxjs'导入{Subscription};
@组件({…})
导出类ParentComponent实现AfterContentInit、OnDestroy{
@ContentChildren(ChildComponent)
公共儿童:QueryList;
私人儿童订阅:订阅;
public ngAfterContentInit():void{
this.childrenSubscription=this.children.changes.subscription(()=>…);
}
公共Ngondestory():void{
此.childrenSubscription.unsubscribe();
}
}
您不必取消订阅QueryList。它是为你做的
请看这里:
作为一般规则,当组件销毁后Observable保持活动状态时,我将取消订阅。在大多数情况下都有效。我知道如何取消订阅,但我想知道是否需要取消订阅。@ContentChildren
装饰程序会自动为我们处理它吗?显示组件销毁时它会自动关闭。