/ / Pourquoi AsyncPipe est-il évalué différemment dans {{}} et * ngIf - angular, typescript

Pourquoi AsyncPipe est-il évalué différemment dans {{}} et * ngIf - angular, typescript

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

Je m'attends à ce qu'il soit vide et ensuite montrer true. Étonnamment, ça se voit false et alors true. Existe-t-il un mécanisme d'évaluation différent pour {{}} et *ngIf? le result$ est de type Observable<{ products: any[] }>.

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

Version Angular2

Réponses:

1 pour la réponse № 1

La raison réelle est que observable dans result$ est froid et est relancé à chaque appel. Et il y a deux appels à result$ | async dans mon balisage. Je dois soit créer une variable réelle pour stocker la valeur sur abonnement ou ajouter share opérateur à observable pour empêcher la réexécution.

Il y a un question sur github pour contourner le problème.