gpt4 book ai didi

Angular2 APP_INITIALIZER 不一致

转载 作者:太空狗 更新时间:2023-10-29 17:04:27 24 4
gpt4 key购买 nike

我正在使用 this 中推荐的 APP_INITIALIZER回答,我的服务返回一个 promise ,但它并不总是等待它解决,我可以看到我的组件 console.logging 未定义,然后服务记录下载的对象。

我需要应用程序在加载此数据之前不执行任何操作。

应用程序模块.ts

import { NgModule, APP_INITIALIZER } from '@angular/core';
import { Http, HttpModule, JsonpModule } from '@angular/http';
import { UserService } from '../services/user.service';

<...>
@NgModule({
imports: [
BrowserModule,
HttpModule,
FormsModule,
JsonpModule,
routing
],
declarations: [
AppComponent,
<...>
],
providers: [
<...>
UserService,
{provide: APP_INITIALIZER,
useFactory: (userServ: UserService) => () => userServ.getUser(),
deps: [UserService, Http],
multi: true
}
],
bootstrap: [AppComponent]

用户服务.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;
}

我遇到了同样的问题,使用 promise 而不是 observable 对我有用。

关于Angular2 APP_INITIALIZER 不一致,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39725724/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com