angular - 反应形式的角度退订
问题描述
我有一个组件充当大型容器组件的子组件,该组件编排稍大的表单(使用反应式表单)
我有这段代码:
ngOnInit() {
this.subscriptions.push(this.form.get('total').valueChanges.subscribe(data => {
this.cdr.markForCheck();
}));
}
ngOnDestroy(): void {
this.subscriptions.forEach((sub) => {
sub.unsubscribe();
})
}
问题:这是必需的吗?即使组件与表单一起被销毁?
解决方案
如果它是一个完成的序列(如 http 请求),则不需要手动清理(假设您手动订阅控制器)。
如果它是一个无限序列,比如这个,你应该取消订阅它。
以防万一,取消订阅所有可观察对象被认为是一种很好的做法。
我为此使用subsink。John Papa 在视频中谈到了这个并推荐了这个库。
推荐阅读
- postgresql - 在postgresql中递归查找所有实体的n代子代
- git - GCP:Cloud Functions:CF 是否会在触发时重新安装 requirements.txt?
- android - 是否可以在打盹模式或应用待机期间运行 Android 定期和一次性工作人员?
- c# - 检查值是否与另一个列表中的值不同的性能
- react-native - 任何导航都未处理“导航/重置”操作
- cassandra - cassandra 主键导致限制的地方
- authentication - 烧瓶 JWT 到 SQLAlchemy 用户对象?
- linux - Flutter Desktop:如何隐藏窗口(并使进程保持活动状态)?
- excel - Excel公式查找索引的匹配部分
- django - 使用 MySQL <> WebSocket 实时更新 Django 应用程序