我有一个应用程序服务,可以在各个组件之间进行交互。 从仪表板单击客户端名称时,它将带我到详细信息页面。 同样在同一详细信息页面上,右侧面板上有客户列表。 当我单击右侧面板上的任何客户端名称时,将使用下面的发射器在同一页面上显示客户端详细信息。
有人可以帮助我找出避免在两个地方重复执行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;
}
答案 0 :(得分:0)
无需将订阅放置在constructor
中。您可以,但这不是一个好习惯。这就是OnInit
生命周期挂钩。
您可以像这样初始化“任务”:
ngOnInit {
this.appService.appEmittedId$.subscribe(id => {
if (id) {
this.id = id;
this.clId = this.appService.clid;
this.initMethod();
}
});
}
不需要附加代码。
使用构造函数来注入服务。