避免从构造函数和ngOnInit中重复方法

时间:2020-05-01 20:39:19

标签: angular

我有一个应用程序服务,可以在各个组件之间进行交互。 从仪表板单击客户端名称时,它将带我到详细信息页面。 同样在同一详细信息页面上,右侧面板上有客户列表。 当我单击右侧面板上的任何客户端名称时,将使用下面的发射器在同一页面上显示客户端详细信息。

有人可以帮助我找出避免在两个地方重复执行initMethod()的方法。

注意:当我从this.appService.appEmittedId $发出一些值时,我没有从 ngOnInit()执行我的initMethod()。

constructor() {
this.appService.appEmittedId$.subscribe(id => {
  if (id) {
    this.id = id;
    this.clId = this.appService.clid;
    this.initMethod();
  }
});
}

ngOnInit() {
this.id = this.appService.id;
this.initMethod();
this.clid = this.appService.clid;
}

1 个答案:

答案 0 :(得分:0)

无需将订阅放置在constructor中。您可以,但这不是一个好习惯。这就是OnInit生命周期挂钩。

您可以像这样初始化“任务”:

ngOnInit {
  this.appService.appEmittedId$.subscribe(id => {
  if (id) {
    this.id = id;
    this.clId = this.appService.clid;
    this.initMethod();
  }
 });
}

不需要附加代码。

使用构造函数来注入服务。