在Angular2中启动时提供即时服务

Mar*_*S82 2 angular

我有一个(单例)服务,该服务在构造函数中包含一些代码,应在启动后直接运行。加载应用程序后,必须立即创建该实例。

实例化服务的一种可能性是将其放入应用程序组件的构造函数中:

export class AppComponent {

  constructor(private mySercive: MyService
...
Run Code Online (Sandbox Code Playgroud)

但由于我从未在此组件中使用myService,因此我会收到类似的警告,mySerive is not used并且团队中的其他人可能会删除该服务。有没有办法实例化应用程序模块内部的服务?

Gün*_*uer 6

您可以提供一个假人APP_INITIALIZER并将其dependency

@NgModule({
  providers: [{provide: APP_INITIALIZER, useMulti: true, deps: [MyService], useFactory: (myService) => null}]
Run Code Online (Sandbox Code Playgroud)

  • Angular 8 中不再存在“useMulti”:它已更名为“multi”。另外 `useFactory` 应该声明一个返回如下函数的函数: `useFactory: (myService) => () => null`。 (7认同)
  • 对于那些面临“TypeError: this.appInits[i] is not a function”的人,@PaulSiersma 的评论就是解决方案:) (2认同)