PLATFORM_INITIALIZER进样器令牌不起作用

时间:2019-04-10 10:08:13

标签: angular angular7

问题,初始化平台后,PLATFORM_INITIALIZER令牌不起作用且未执行。

根据文档,我们可以使用该令牌在应用程序初始化/引导后执行某些操作。

文档A function that will be executed when a platform is initialized. 另外,关于此令牌用法和示例的文档非常丰富。 https://angular.io/api/core/PLATFORM_INITIALIZER

已经尝试 我曾尝试过使用PLATFORM_INITIALIZER,类似于对其进行单元测试的方式,但未获得任何成功。 https://github.com/angular/angular/blob/f8096d499324cf0961f092944bbaedd05364eea1/packages/platform-browser/testing/src/browser.ts

stackblitz链接 https://stackblitz.com/edit/angular-zza3af?file=src/app/app.module.ts

function initBrowserTests() {
  window.alert('PLATFORM_INITIALIZER called');
}

const featureFlagsFactory = () => {
  window.alert('APP_INITIALIZER called');
  return () => {
    return {};
  };
};

export const appInitializers = [
  {
    provide: APP_INITIALIZER,
    useFactory: featureFlagsFactory,
    multi: true
  },
  {
    provide: PLATFORM_INITIALIZER,
    useValue: initBrowserTests,
    multi: true
  },
];

@NgModule({
  providers: [ appInitializers ],
  imports:      [ BrowserModule, FormsModule ],
  declarations: [ AppComponent, HelloComponent ],
  bootstrap:    [ AppComponent ],
})
export class AppModule { }

期望 initBrowserTests()Fn应该已经被调用,我想用它来初始化AuthService。

1 个答案:

答案 0 :(得分:0)

例如,当我们调用createPlatformFactory时,该令牌应该传递给extraProviders或通过platformBrowserDynamic传递:

platformBrowserDynamic([{
  provide: PLATFORM_INITIALIZER,
  useValue: initBrowserTests,
  multi: true
}]).bootstrapModule(AppModule)

Forked Stackblitz