У меня есть контейнер, который передает Observable с именем positions$
компоненту, который в конечном итоге возвращает массив объектов. Когда я связываю этот массив с шаблоном, он отображает данные так, как я ожидал, но если я пытаюсь получить доступ к этим же данным в одной из моих функций в этом же компоненте, он возвращает следующее:
![enter image description here](https://i.stack.imgur.com/m9yeS.png)
Это записывается в консоль задолго до того, как ожидаемые данные отображаются в шаблоне, поэтому я знаю, что нажимаю кнопку не слишком быстро. Почему я не получаю одинаковые данные в обоих местах? Вот мой соответствующий код:
машинописный текст контейнера:
positions$: Observable<Position[]>;
...
this.positions$ = this.store.pipe(select(fromStore.getAllPositions));
this.store.pipe(select(fromStore.getPositionsLoaded)).subscribe(loaded => {
if (!loaded) {
this.store.dispatch(new fromStore.LoadPositions());
}
});
html контейнера:
<app-position-form
[loading]="loading"
[positions]="positions$"
[positionsLoading]="positionsLoading$"
(add)="addPosition($event)">
</app-position-form>
машинописный текст:
@Input() positions: Position[];
...
addPosition() {
// Does NOT work as expected
console.log('existing positions', this.positions);
}
html компонента:
<!-- Data displays correctly -->
<ul *ngIf="(positions | async)?.length">
<li *ngFor="let position of (positions | async)">
{{position.position}}
</li>
</ul>