Angular 5 ngIfElse: сохранение условного результата в переменной

Код:

<mat-icon [ngClass]='{ rotate: !users }'>refresh</mat-icon>
<div *ngIf="usersObservable | async as users; else loading">
  ...
</div>
<ng-template #loading let-users>
  Waiting...
</ng-template>

Ожидаемое: rotate класс применяется к <mat-icon> пока пользователи загружаются

Результат: класс не применяется

Вопрос: возможно ли сохранить / использовать логический результат оценки ngIfElse?

PS: в этом примере я хочу rotate класс для применения <mat-icon> пока не завершится HTTP-запрос.

1 ответ

Решение

as users переменная только в области видимости для привязок внутри или внутри тега, где *ngIf применены.

Вы бы сделали что-то вроде

<mat-icon [ngClass]='{ rotate: !(usersObservable | async)?.users }'>refresh</mat-icon>

Убедитесь, что ваши наблюдаемые ведут себя правильно, когда подписаны более одного раза. Например, некоторые из методов, упомянутых в разделе Как правильно передать результат сетевого вызова Angular Http в RxJs 5?

Другие вопросы по тегам