/ / Warum wird AsyncPipe in {{}} und * ngIf - angular typescript anders ausgewertet?

Warum wird AsyncPipe in {{}} und * ngIf - angular typescript anders ausgewertet?

<div *ngIf="!!(result$ | async)">
{{!!(result$ | async)}}
</div>

Ich erwarte, dass es leer ist und zeige es dann true. Überraschenderweise zeigt es sich false und dann true. Gibt es einen anderen Bewertungsmechanismus für? {{}} und *ngIf? Das result$ ist vom Typ Observable<{ products: any[] }>.

constructor() {
this.result$ = Observable.of("Dummy!").delay(3000);
}

Angular2 Release-Version

Antworten:

1 für die Antwort № 1

Der eigentliche Grund ist das in result$ ist kalt und wird jedes Mal erneut ausgeführt, wenn es angerufen wird. Und es gibt zwei Anrufe für result$ | async in meinem Markup. Ich muss entweder eine tatsächliche Variable erstellen, um den Wert im Abonnement zu speichern oder hinzuzufügen share Operator zu beobachtbar, um eine erneute Ausführung zu verhindern.

Da ist ein Ausgabe auf GitHub für Problemumgehungen.