加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

Angular2 APP_INITIALIZER不一致

发布时间:2020-12-17 09:29:08 所属栏目:安全 来源:网络整理
导读:我正在使用APP_INITIALIZER,就像在 this的答案中推荐的那样,我的服务返回一个承诺,但并不总是等待它解决,我可以看到我的组件console.logging未定义,然后服务记录下载的对象. 我需要该应用程序在加载数据之前不做任何事情. app.module.ts import { NgModule,A
我正在使用APP_INITIALIZER,就像在 this的答案中推荐的那样,我的服务返回一个承诺,但并不总是等待它解决,我可以看到我的组件console.logging未定义,然后服务记录下载的对象.

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

app.module.ts

import { NgModule,APP_INITIALIZER } from '@angular/core';
import { Http,HttpModule,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;
}

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读