Angular 5: APP_INITIALIZER работает на каждом маршруте - PullRequest
0 голосов
/ 18 октября 2018

Я использую APP_INITIALIZER в угловом приложении 5, которое загружает некоторые конфигурации из вызова API.

Я ожидаю, что APP_INITIALIZER будет запускаться только один раз, когда приложение загружается в первый раз, но я вижумоя логика APP_INITIALIZER запускается при каждом переходе к новому маршруту.

Работает ли APP_INITIALIZER при каждом изменении маршрута, и есть ли способ запустить его только один раз?Псевдокод:

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

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

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


// app-load.service.ts
loadInitialData(): Promise<any> {
  return new Promise((resolve, reject) => {
    const getConfig= this.http.get<any>(URL);
    return getConfig.subscribe(response=> {
      return resolve();
  });

1 Ответ

0 голосов
/ 18 октября 2018

Можете ли вы опубликовать код того, как вы его используете?Он должен работать только один раз.Добавить AppLoadModule в app.module import

 //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);

    });
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...