【发布时间】:2018-01-03 09:08:27
【问题描述】:
是否可以在服务初始化时执行一些代码。例如,当服务产品 Service 被初始化时,我想执行以下代码:
this.var = this.sharedService.aVar;
【问题讨论】:
-
把它放在
constructorofproductService中
标签: javascript angular
是否可以在服务初始化时执行一些代码。例如,当服务产品 Service 被初始化时,我想执行以下代码:
this.var = this.sharedService.aVar;
【问题讨论】:
constructor of productService中
标签: javascript angular
除了构造函数,Service 没有生命周期钩子。
component/directive 支持生命周期挂钩
Injectables 是普通类(普通对象),因此它们没有特殊的生命周期。
@Injectable()
export class SampleService {
constructor() {
console.log('Sample service is created');
//Do whatever you need when initialized.
}
}
类的构造函数被调用,这就是你的“OnInit”。至于销毁,服务并没有真正被销毁。
一个服务需要另一个服务的地方使用dependency injection
@Injectable()
export class HeroService {
private yourVariable: any;
constructor(private sharedService: sharedService) {
this.yourVariable = this.sharedService.aVar;
}
【讨论】:
我建议您阅读一下lifecycle hooks in Angular。虽然在构造函数中是一个选项,但最好将代码保留在变量初始化中,并使用 ngOnInit 生命周期挂钩来完成类初始化工作。两者都是一种选择,但了解生命周期钩子是解决您的问题和思考您想在哪里执行此操作的一个很好的起点。
【讨论】: