Angular2.x APP_INITIALIZER

【Angular2.x APP_INITIALIZER】花门楼前见秋草,岂能贫贱相看老。这篇文章主要讲述Angular2.x APP_INITIALIZER相关的知识,希望能为你提供帮助。
APP_INITIALIZER是在Angular2.x程序启动之前执行的一个函数,可以在这个里面进行自动登录,判断登录token,阻止启动等一系列操作,可以在AppModule类的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(); }); }; }


    推荐阅读