我有一个 Angular 7 模板,它提供了book$
一个 observabletranslationsAsArray$
作为成员的 observable:
<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$
就解决了。
你知道原因吗?我的模板应该看起来不同吗?