0
在this Plunker我有這樣的模板:Angular2 - 如何使用非數組結果的異步管道?
<span *ngFor="let a of Articles">{{a}}</span>
這是組件類:
export class App
{
Articles: number[];
constructor()
{
this.getData();
}
simualteDb()
{
return new Promise((a, b) =>
{
setTimeout(function()
{
a(
{ // notice , an object ,not an array
data: [0, 1, 2]
});
}, 500)
});
}
async getData()
{
this.Articles = (await this.simualteDb()).data;
}
}
這不工作,我也看到在輸出012
。但我想用async
管道。
所以我想我的模板是:
<span *ngFor="let a of Articles |async ">{{a}}</span>
但是有一個問題。
Articles
不是數組。它是data
prop的對象,其中是所需的數組。
我不能做這樣的事情:
<span *ngFor="let a of Articles.data |async ">{{a}}</span>
我已經創造了另一個plunker僅返回數組:
它必須和|async
工作。
問:
注視着我的第一個代碼,我如何使用async pipe
,同時還解決了對象,而不是一個數組?
{data: [0, 1, 2]}
呀我剛看到了這一點[答案](http://stackoverflow.com/a/35302622/859154),它可以與承諾,也可以使用 - [這裏是一個演示我的承諾和異步管道](https://plnkr.co/edit/mK2tWJmmkm4qlZ7DWYq4?p=preview)。所以「_you需要一個Observable_」部分是不正確的;-) –
@Royi我也嘗試了它,就像你做的,但與'等待'的承諾面前,因爲你的掠奪者包括它。我試圖弄清楚什麼是錯誤的:D – echonax
是的,它可以與promise一起使用,但AsyncPipe不能使用數組或對象。只有'Observable,Promise或EventEmitter'下一個將無法工作'{data:[0,1,2]} | async'和'[0,1,2] | async' – yurzui