角度5:APP_INITIALIZER在每条路线上运行

时间:2018-10-18 18:27:58

标签: angular angular5

我在有角度的5应用程序中使用APP_INITIALIZER,该应用程序通过API调用加载了一些配置。

我对APP_INITIALIZER的期望是,当应用程序首次加载时,它应该只运行一次,但是我每次导航到新路线时都看到我的APP_INITIALIZER逻辑正在运行。

APP_INITIALIZER是否在每次更改路线时都运行,有没有办法只运行一次? 伪代码:

workbench.action.terminal.kill

1 个答案:

答案 0 :(得分:0)

您可以发布使用方式的代码吗?它应该只运行一次。将AppLoadModule添加到app.module导入

 //appload.module.ts
        import { NgModule, APP_INITIALIZER } from '@angular/core';
        import { AppLoadService } from './app-load.service';


        export function init_app(appLoadService: AppLoadService) {
            return () => appLoadService.initializeApp();
        }

        @NgModule({

            providers: [
              AppLoadService,
              { provide: APP_INITIALIZER, useFactory: init_app, deps: [AppLoadService], multi: true }

            ]
          })
          export class AppLoadModule { }



@Injectable()
export class AppLoadService {

  constructor(

  ) { }

  initializeApp(): Promise<any> {
    return new Promise((resolve, reject) => {
      resolve();

          // setTimeout(() => {         

          //   //do something
          //   console.log("App Loaded");

          //   resolve();

          // }, 1000);

    });
  }
}