具有Http请求的Angular APP_INITIALIZER

时间:2018-01-30 14:22:49

标签: angular http initialization

我尝试在我的角度项目中加入APP_INITIALIZER来发出http请求以获取显示的用户权限列表。然而,函数内部的http请求其调用似乎没有被触发。

providers: [
    PermissionService,
    { provide: APP_INITIALIZER, useFactory: (permissionServiceFactory: PermissionService) => () => permissionServiceFactory.getPermissions(), deps: [PermissionService], multi: true },
],

getPermissions() {
    return this.http.get(this.url).pipe(
         map(this.extractPermissions),
         catchError(this.handleError)
    )
}

我可以看到调用getPermissions并且我已经尝试将它放在setTimeout中,但似乎没有任何工作。这是APP_INITIALIZER的问题吗?看起来很简单,我不知道自己会做错什么。

1 个答案:

答案 0 :(得分:0)

getPermissions()需要返回一个承诺

getPermissions(): Promise<any> {
   const temp = return this.http.get(this.url).pipe(
         map(this.extractPermissions),
         catchError(this.handleError)
    );
   return temp;
}