首页 > 解决方案 > 在 Angular 中,订阅和订阅的目的是什么?我们应该在哪里使用(构造函数或 ngOnInit)?

问题描述

我在Angular中遇到了很多带有subscribe方法的代码,如果我们不使用它们会失去什么?

为什么所有使用 subscribe 的代码都写在构造函数而不是 ngOnInit 中?

constructor(private router: Router) {
  m_Router.events.filter(event => event instanceof XComponent)
    .subscribe(e => {
      ...
    });
}

标签: angulartypescript

解决方案


订阅服务的最佳实践是在ngOnInit() 生命周期钩子方法中,

您可以在有关角度服务的官方文档中阅读此内容:示例getHeroes服务:

服务教程

在 ngOnInit 中调用 虽然您可以在构造函数中调用 getHeroes(),但这不是最佳实践。

保留构造函数用于简单的初始化,例如将构造函数参数连接到属性。构造函数不应该做任何事情。它当然不应该像真正的数据服务那样调用向远程服务器发出 HTTP 请求的函数。

相反,在 ngOnInit 生命周期钩子中调用 getHeroes() 并让 Angular 在构建 HeroesComponent 实例后的适当时间调用 ngOnInit。

ngOnInit() {
  this.getHeroes();
}

推荐阅读