我正在从提供程序中的API获取数据,我想从这个端点显示元素的详细信息:https://jsonplaceholder.typicode.com/posts/3
我用Promise方法获取数据,我想在其他方法中通过id获取元素:
getPostByID(id){
for( var i=0; i < ( this.getPosts().length ); i++){
if (this.getPosts[i].id == id) {
return Promise.resolve(this.getPosts[i]);
}
}
}
字符串
获取所有数据的方法是:
getPosts(){
return new Promise(resolve => {
this.http.get(URLS.POSTS).subscribe(data => {
resolve(data);
}, err =>{
console.log(err);
});
});
}
型
我得到了这个错误:
类型“Promise &{}>”上不存在属性“length”。
1条答案
按热度按时间zengzsys1#
错误说明了一切。
Promise<T>
上没有length
。您需要从getPostByID
方法返回promise。我建议reading aboutPromise
and how it works。字符串
现在,当你使用这些数据时,你需要使用
.then
:型
您可以在模板中显示它:
型
您可能希望在加载数据时添加一些加载状态。
型
在模板中:
型
此外,在Angular中使用来自RxJS的Observables比promise更惯用,所以您可能应该看看它是如何工作的--它没有那么大的不同,但功能要强大得多。