Angularjs   发布时间:2022-04-20  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Angular2 APP_INITIALIZER不一致大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用APP_INITIALIZER,就像在 this的答案中推荐的那样,我的服务返回一个承诺,但并不总是等待它解决,我可以看到我的组件console.logging未定义,然后服务记录下载的对象.

我需要该应用程序在加载数据之前不做任何事情.

app.module.ts

import { NgModule,APP_INITIALIZER } from '@angular/core';
import { http,httpR_240_11845@odule,JsonpModule } from '@angular/http';
import { Userservice } from '../services/user.service';

<...>
@NgModule({
  imports: [
    BrowserModule,FormsModule,JsonpModule,routIng
  ],declarations: [
    AppComponent,<...>
  ],providers: [
    <...>
    Userservice,{provide: APP_INITIALIZER,useFactory: (userServ: UserservicE) => () => userServ.getUser(),deps: [Userservice,http],multi: true
    }
  ],bootstrap: [AppComponent]

user.service.ts

@Injectable()
export class Userservice {

    public user: User;
    constructor(private http: http) { }

    getUser(): Promise<User> {
        console.log('get user called');
        var observable= this.http.get('/auth/getuser',{ headers: getHeaders() })
            .map(extractData);

        observable.subscribe(user => {thiS.User = user;
            console.log(thiS.User)});
        return observable.toPromise();
    }
}
尝试以下代码
getUser(): Promise<User> {
    console.log('get user called');
    var promise = this.http.get('/auth/getuser',{headers: getHeaders()})
        .map(extractData)
        .toPromise();
    promise.then(user => {
        thiS.User = user;
        console.log(thiS.User);
    });
    return promise;
}

我面临着同样的问题,使用承诺而不是观察,对我来说是窍门.

大佬总结

以上是大佬教程为你收集整理的Angular2 APP_INITIALIZER不一致全部内容,希望文章能够帮你解决Angular2 APP_INITIALIZER不一致所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。