【问题标题】:Executing some code when a service is initialized初始化服务时执行一些代码
【发布时间】:2018-01-03 09:08:27
【问题描述】:

是否可以在服务初始化时执行一些代码。例如,当服务产品 Service 被初始化时,我想执行以下代码:

this.var = this.sharedService.aVar;

【问题讨论】:

  • 把它放在constructor of productService

标签: javascript angular


【解决方案1】:

除了构造函数,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;
}

【讨论】:

【解决方案2】:

我建议您阅读一下lifecycle hooks in Angular。虽然在构造函数中是一个选项,但最好将代码保留在变量初始化中,并使用 ngOnInit 生命周期挂钩来完成类初始化工作。两者都是一种选择,但了解生命周期钩子是解决您的问题和思考您想在哪里执行此操作的一个很好的起点。

【讨论】:

  • 答案肯定有帮助。只需更新生命周期挂钩 URL。由于 URL 无效,它当前正在重定向到错误页面。干杯!
  • 生命周期钩子仅适用于组件和指令。我认为这里的 OP 指的是服务。 stackoverflow.com/questions/36188966/…
猜你喜欢
  • 1970-01-01
  • 2016-12-17
  • 2012-05-31
  • 1970-01-01
  • 1970-01-01
  • 2014-11-01
  • 2011-12-05
  • 2023-03-16
  • 1970-01-01
相关资源
最近更新 更多