Angular2.x APP_INITIALIZER

APP_INITIALIZER는 Angular 2.x 프로그램이 시작되기 전에 실행된 함수는 이 안에서 자동 로그인을 하고 Token 로그인을 판단하며 시작을 막는 등 일련의 조작을 할 수 있다. App Module 클래스의providers에서factory 형식으로 설정할 수 있다.factory는promise로 되돌아오는 함수이다.
import { BrowserModule } from '@angular/platform-browser';
import { NgModule, APP_INITIALIZER } from '@angular/core';
import { AppComponent } from './app.component';
@NgModule({
  declarations: [
    AppComponent
  ],
  imports: [
    BrowserModule
  ],
  providers: [
    {
      provide: APP_INITIALIZER,
      useFactory: initApp,
            deps: [HttpClient],
      multi: true
    }
  ],
  bootstrap: [AppComponent]
})
export class AppModule { }

다음은 initApp의 정의를 살펴보겠습니다. 반드시 반환값이 Promise의 함수일 경우 주의하십시오
     Projmise  
export function initApp() {
  return () => {
    return new Promise((resolve, reject) => {
      setTimeout(() => {
        console.log('In initApp');
        resolve(); //reject()          
      }, 3000);
    });
  };
}

      
export function initApp(http: HttpClient) {
  return () => {
    return http.get('https://api.github.com/users/sagar-ganatra')
      .toPromise()
      .then((resp) => {
        console.log('Response 1 - ', resp);
      });
  };
}

         
export function initApp(http: HttpClient) {
  return () => {
    return http.get('login').toPromise()
      .then((resp) => {
                this.user = resp.user;
                return this.http.get('fileInfo').toPromise();
      });
  };
}

좋은 웹페이지 즐겨찾기