我听说ANGLE自动处理自己的可观测对象的退订,因此不需要手动取消可观测对象的订阅.

给我留下的印象是,如果是定制的,我应该取消订阅可观察到的内容.我正在寻找关于这一点的解释,我哪里错了.

示例:

constructor(
        private _route: ActivatedRoute) {
            this._route.queryParams.subscribe(params => {
                if (params.id) {
                    this.show(params.id);
                }
            });
    }

v.v.

constructor(
        private _route: ActivatedRoute) {
            this._route.queryParams.pipe(takeUntil(this._unsubscribeAll)).subscribe(params => {
                if (params.id) {
                    this.show(params.id);
                }
            });
    }

我使用的是ActivatedRouting的queryParams Observable,给我的印象是这里的Angel会自动处理取消订阅,我不必手动操作.

推荐答案

如果您像您的示例中那样执行手动subscribe,您还应该执行取消订阅.您展示的takeUntil习语中_unsubscribeAll是在teardown中完成的,这是非常常见的.

当使用async个管道时,Angel会自动取消订阅,因此,如果您在html模板中使用类似myObs | async的内容呈现Observable,则不需要这样做.

Angular相关问答推荐

Angular - Bootstrap 5 Carbon不工作

Angular 17@在大小写时切换多个值

VS代码中带Angular 17的缩进新控制流

在Angular 17的本地服务应用程序时禁用SSR

阶段JS画布覆盖 bootstrap 模式

Angular Http 拦截器 - 修改标头会导致 CORS

如果Angular 数据为空,如何设置N/A

在父组件的子组件中使用 ng-template

当我ng serve时,Angular CLI 提示TypeError: callbacks[i] is not a function

如何在 cypress 测试中实现拖放?

如何在 Angular 5 HttpInterceptor 中添加多个标头

Angular2 路由 VS ui-router-ng2 VS ngrx 路由

即使 withCredentials 为真,Angular 也不会发送在 Set-Cookie 中收到的 Cookie

Angular 2 - 什么是Root Scope?

如何处理解析器中的错误

Angular 6 - NullInjectorError:单元测试中没有 HttpClient 的提供者

读取文件并解析其内容

Angular 2:formGroup 需要一个 FormGroup 实例

Angular 2 单元测试 - 出现错误无法加载ng:///DynamicTestModule/module.ngfactory.js

为什么 *ngIf 不适用于 ng-template?