Привет, я пытаюсь получить последние четыре сообщения в блоге из содержательного api в angular 5. Я создал службу и могу получить 1 с помощью следующего кода.
getContent(contentId) {
const promise = this.client.getEntry(contentId);
return Observable.fromPromise(promise).map(entry => entry.fields);
};
Я хотел бы вернуть его как наблюдаемый, однако, если он будет возвращен как обещание, я хотел бы знать, как работать с обещанием в component.ts и -.html.
getLastByCount(number) {
var promise = this.client.getEntries({
limit: number
})
...
}
Если я сделаю то же самое для получения нескольких записей, я получу PromiseObservable, который содержит обещание: ZoneAwarePromise. В котором есть 'items: Array', где объект - это как когда я регистрирую единственную запись. Как мне работать с такими объектами?
Отредактировано:
Я сделал, как предложил: Стефан
getLastByCount(number) {
var promise = this.client.getEntries({
limit: number
})
return Observable.fromPromise(promise).mergeMap((collection) => (
Observable.from(collection.items)
))
}
И в моем component.ts в OnInit ()
posts$: Observable<any>;
this.posts$ = this.contentfulService.getLastByCount(4).map(entry => entry.fields);
В моем component.html я делаю это при отображении одной записи
<div *ngIf="post$ | async as post">
<h1>{{ post.headline }}</h1>
<time>Published on {{ post.published | date: 'fullDate' }}</time>
<hr>-->
</div>
Я пробую это при использовании коллекции:
<div *ngIf="posts$ | async as posts">
<ul>
<li class="post" *ngFor="let post of posts$ | async">
<h1>{{ post.headline }}</h1>
<time>Published on {{ post.published | date: 'fullDate' }}</time>
<hr>
</li>
</ul>
</div>
Я получаю эту ошибку: Ошибка: не удается найти другой поддерживающий объект «[объект-объект]» типа «объект». NgFor поддерживает привязку только к Iterables, таким как Arrays.