APP_INITIALIZER是在Angular2.x程序启动以前执行的一个函数,能够在这个里面进行自动登陆,判断登陆token,阻止启动等一系列操做,能够在AppModule类的providers中以factory的形式来配置,factory是一个返回值为promise的函数。git
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的函数github
简单的一个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(); }); }; }