У меня есть шаблон Angular 7, который представляет наблюдаемую book$
с наблюдаемой translationsAsArray$
в качестве члена:
<div *ngIf="book$ | async as book">
<dl>
<div *ngIf="(book.translationsAsArray$ | async) as translations">
<dt><b class="text-muted">TRANSLATIONS</b></dt>
<dd>
<ul class="list-unstyled">
<li *ngFor="let translation of translations">
<a routerLink="/books/{{translation.rid}}">{{translation.title}}</a> ({{translation.languageAsString}})
</li>
</ul>
</dd>
</div>
</dl>
</div>
Редактировать: book.translationsAsArray$
выглядит следующим образом (только для целей тестирования):
get translationsAsArray$(): Observable<Book[]> {
return timer(50).pipe(
tap(time => console.log('translationsAsArray$() subsribed')),
map(time => [new Book(this.bookService, 'abc')]));
}
Проблема, с которой я сталкиваюсь, заключается в том, что translationsAsArray$
повторно подписывается повторно.
Когда я изменяю решение на вызов subscribe
вмашинописный текст вместо использования async
трубы для book$
и translationsAsArray$
проблема решена.
Знаете ли вы причину?Должен ли мой шаблон выглядеть иначе?