Ошибка говорит само за себя.Там нет length
на Promise<T>
.Вам нужно вернуть обещание из вашего getPostByID
метода.Я предлагаю прочитать о Promise
и о том, как оно работает .
getPostByID(id){
for( var i=0; i < ( this.getPosts().length ); i++){
if (this.getPosts[i].id == id) {
return this.getPosts[i]
}
}
}
Теперь, когда вы используете эти данные, вам нужно использовать .then
:
this.service.getPostByID(id).then(data => {
this.post = data
})
И вы можете отобразить его в шаблоне:
{{ post | json }}
Возможно, вы захотите добавить некоторое состояние загрузки во время загрузки данных.
this.isLoading = true
this.service.getPostByID(id).then(data => {
this.isLoading = false
this.post = data
})
И в шаблоне:
<div class="loading" *ngIf="isLoading">Loading...</div>
<div class="content" *ngIf="!isLoading">
{{ post | json }}
</div>
Кроме того, в Angular более идиоматично использовать Observables из RxJS, чем обещания, поэтому вам, вероятно, стоит проверить, как это работает - это не так уж и отличается, но гораздо более мощно.