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