3 回答

TA貢獻(xiàn)1865條經(jīng)驗(yàn) 獲得超7個(gè)贊
this.getUsers = this.getUsers.bind(this);
在構(gòu)造函數(shù)中?

TA貢獻(xiàn)1906條經(jīng)驗(yàn) 獲得超3個(gè)贊
usingsetTimeout 不是一個(gè)理想的解決方案,您可以直接在訂閱回調(diào)函數(shù)中更新您的組件變量,并在您的模板中做任何您想做的事情。看我的例子
getItems() {
this.apollo
.watchQuery({
query: this.getItemsQuery,
})
.valueChanges.subscribe((result: any) => {
this.items = result?.data?.items;
});
}
并在模板中
<mat-option *ngFor="let item of items" [value]="item.price">
{{ item.name }}
</mat-option>

TA貢獻(xiàn)1803條經(jīng)驗(yàn) 獲得超3個(gè)贊
也許不是理想的解決方案,所以我仍然愿意嘗試其他事情,但我能夠通過在服務(wù)中使用帶有計(jì)時(shí)器的承諾,然后在組件中使用異步等待來獲取組件中設(shè)置的值。
服務(wù)
getUsers(): any {
return new Promise((resolve, reject) => {
let me = this;
this.apollo.watchQuery<any>({
query: USER_SEARCH
})
.valueChanges
.subscribe(({ data, loading }) => {
this.loading = loading;
this.users = data.search;
});
setTimeout( function() {
if(me.users !== 'undefined'){
resolve(me.users)
}
}, 1000)
})
}
成分
async getUsers(): Promise<any> {
this.users = await this.userService.getUsers();
console.log(this.users);
}
這允許從服務(wù)中設(shè)置 this.users。據(jù)我所知,當(dāng) Angular 開始設(shè)置值時(shí),Apollo 仍在運(yùn)行查詢,導(dǎo)致值最初顯示為未定義,但我的服務(wù)在控制臺中具有來自查詢的值。不確定 Apollo 或 Angular 是否有更好的方法來解決這個(gè)問題,但如果有的話,我很想聽聽。
添加回答
舉報(bào)