Каково правильное значение этой угловой асинхронной трубы? - PullRequest
0 голосов
/ 07 ноября 2018

Я очень плохо знаком с Angular, и у меня есть следующие сомнения по поводу этого куска кода.

В представлении у меня есть этот код:

<li *ngFor="let hero of heroes$ | async" >
  <a routerLink="/detail/{{hero.id}}">
    {{hero.name}}
  </a>
</li>

повторение на героев $ . Это не массив, но это Observable , потому что он работает над этим свойством связанного компонента:

heroes$: Observable<Hero[]>;

Это мне не совсем ясно.

Следуя моей интерпретации (просьба подтвердить или опровергнуть).

  • * ngFor не может напрямую итерировать героев $ , потому что это Observable .

  • Это Наблюдаемый испускает массив Герой , но это асинхронное поведение.

  • Канал async - это то, что подписывает эту Observable , и когда она готова (когда выдает массив), директива * ngFor может повторяться в этом массиве.

На практике таким образом я могу выполнить эту операцию непосредственно в представлении вместо этого в компоненте, подписывающем Observable.

1 Ответ

0 голосов
/ 07 ноября 2018

Если вы напишите это так, то это более понятно: (heroes$ | async) as heroList

...