当我第一次加载页面时,在某些页面上,它在 ngOnDestroy 中显示取消订阅错误,因为我正在取消订阅其中的订阅。
我不确定为什么在组件的初始化时调用 ngOnDestroy 。
这是我第一次加载页面时看到的错误。
我认为这是 angular2-multiselect-dropdown 的一些问题,但在其他一些组件中,它自己的 ngOnDestory 也被调用,并表示未定义取消订阅的订阅。
这就是订阅的创建。
实际上我不认为它在定义可观察量方面有任何其他问题。
那么这是 Angular 组件生命周期的问题还是 Angular2-multiselect-dropdown 的问题?
我之前没有看到这个错误,也不知道我做错了什么。任何人都可以有类似的问题或帮助我解决这个问题吗?提前致谢。
Mar*_*ich 10
我在路由中使用的组件也遇到了类似的问题。如果我向构造函数、ngOnInit 和 ngOnDestroy 添加日志记录,则输出如下所示:
就我而言,问题在于我如何使用<router-outlet>
. 简单地说,我的模板如下所示:
<div *ngIf="hasLayout()">
<app-navigation></app-navigation>
<ng-container *ngTemplateOutlet="routerOutlet"></ng-container>
</div>
<div *ngIf="!hasLayout()">
<ng-container *ngTemplateOutlet="routerOutlet"></ng-container>
</div>
<ng-template #routerOutlet>
<router-outlet></router-outlet>
</ng-template>
Run Code Online (Sandbox Code Playgroud)
(灵感来自:/sf/answers/3620792521/)
我对其进行了更改,以便我的模板中只有一个<router-outlet>
组件没有。<ng-template>
与此类似:
<div *ngIf="hasLayout()">
<app-navigation></app-navigation>
</div>
<router-outlet></router-outlet>
Run Code Online (Sandbox Code Playgroud)
出现此行为的原因是控制所使用的值的更改<router-outlet>
与异步身份验证防护的不幸组合。就我而言,身份验证守卫正在等待登录初始化,并且初始化的登录会切换<router-outlet>
.
以下是重现不良行为的示例: https://stackblitz.com/edit/angular-27vrnz
归档时间: |
|
查看次数: |
4378 次 |
最近记录: |