标签: angular-component-life-cycle

Angular/RxJs什么时候应该取消订阅"订阅"

我应该何时存储Subscription实例并unsubscribe()在NgOnDestroy生命周期中调用,何时可以忽略它们?

保存所有订阅会在组件代码中引入很多混乱.

HTTP客户端指南忽略这样的订阅:

getHeroes() {
  this.heroService.getHeroes()
                   .subscribe(
                     heroes => this.heroes = heroes,
                     error =>  this.errorMessage = <any>error);
}
Run Code Online (Sandbox Code Playgroud)

同时," 航线与导航指南"说:

最终,我们会在其他地方导航.路由器将从DOM中删除此组件并将其销毁.在此之前我们需要自己清理.具体来说,我们必须在Angular破坏组件之前取消订阅.如果不这样做可能会造成内存泄漏.

我们取消订阅我们ObservablengOnDestroy方法.

private sub: any;

ngOnInit() {
  this.sub = this.route.params.subscribe(params => {
     let id = +params['id']; // (+) converts string 'id' to a number
     this.service.getHero(id).then(hero => this.hero = hero);
   });
}

ngOnDestroy() {
  this.sub.unsubscribe();
}
Run Code Online (Sandbox Code Playgroud)

subscription observable rxjs angular angular-component-life-cycle

653
推荐指数
10
解决办法
15万
查看次数

如果我使用 ngOnInit 方法而不实现 OnInit 接口会发生什么

谁能告诉我如果我不实现onInit接口并且仍然组件内使用ngOnInit组件生命周期会发生什么?

因为我在没有实现接口的情况下使用了ngOnInit生命周期钩子,它对我来说也是一样的。

所以只是想了解为什么我应该实现一个接口?

angular angular-component-life-cycle

5
推荐指数
1
解决办法
171
查看次数

为什么变更检测被调用两次?

我有一个没有逻辑的简单测试组件。我渲染这个组件。为什么 DoCheck 钩子被调用两次?

据我了解,每次更改检测都会调用 DoCheck。但没有任何变化。我只是渲染组件,DoCheck 已经被调用了两次。还有 ngAfterContentChecked 和 ngAfterViewChecked。

在此输入图像描述

angular angular-component-life-cycle

4
推荐指数
1
解决办法
7137
查看次数