我有一個問題,我困惑了很長時間。它最簡單,但我超級卡住了。
問題是,我有一個功能:
public getListTitle(): any {
const listId = this.route.snapshot.paramMap.get('listId');
console.log("het list-id = " listId);
this.listService.getListNo404(listId).subscribe(list=>{
this.listTitle= list.listTitle ;
console.log(this.listTitle);
});
console.log(this.listTitle);
return this.listTitle;
}
我希望在我的 fb 組中傳遞 listTitle 元素:
{
this.newList = this.fb.group({
'listTitle': [this.getListTitle()],
'listId':['873'],
'listCreator':[this.username],
'sublist': this.fb.array([
this.initSublist()
])
});
但是,我只是無法使其作業。用地圖和訂閱嘗試了各種事情,但我的腦海中顯然沒有點擊。
我還在控制臺中看到第一個 console.log 確實列印了所需的值,但是第二個沒有。所以訂閱出了問題。
非常感謝您的觀看!
uj5u.com熱心網友回復:
您需要從函式回傳 observable 并在需要回應的地方訂閱它。
import { Observable } from 'rxjs';
import { map } from 'rxjs/operators';
public getListTitle(): Observable<any> {
const listId = this.route.snapshot.paramMap.get('listId');
return this.listService.getListNo404(listId).pipe(
map((list) => list.listTitle) // <-- use `map` operator to return `listTitle`
);
}
并使用可觀察的
this.getListTitle().subscribe({
next: (listTitle: any) => {
this.newList = this.fb.group({
'listTitle': [listTitle],
'listId':['873'],
'listCreator':[this.username],
'sublist': this.fb.array([
this.initSublist()
])
});
},
error: (error: any) => {
// handle errors
}
});
請參閱此處了解為什么您需要這樣做。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/367023.html
