Условное (if, else) в Angular 2
Здравствуйте, я проработал несколько лет в .NET, серебристый, теперь я начинаю с agular 2 и expressjs.
И я сомневаюсь, что даже я не мог найти, как это сделать в angular 2 + expressjs и безопасен с клиентской стороны?
<% if(User.Identity.IsAuthenticated){ %>
<b>Sign Out</b>
<% } else { %>
<b>Sign In</b>
<% } %>
Ответы
Ответ 1
Если вам нужно "else", возможно, лучший способ - использовать NgSwitch (https://angular.io/docs/ts/latest/api/common/index/NgSwitch-directive.html)
Так что-то вроде:
<div [ngSwitch]="User?.Identity?.IsAuthenticated">
<b *ngSwitchCase="true">Sign Out</b>
<b *ngSwitchDefault>Sign In</b>
</div>
Ответ 2
С Angular 4 это теперь возможно:
-
Синхронно
позволяет предположить, что мы определили эту переменную класса:
shown: boolean = true;
Если синтаксис else:
<button (click)="shown = !shown">toggle 'shown' variable</button>
<div *ngIf="shown; else elseBlock">If shown</div>
<ng-template #elseBlock>else not shown</ng-template>
Обратите внимание, что ng-template
необходимо использовать, чтобы эта структурная директива работала, поэтому, если у вас есть пользовательский компонент, оберните его внутри ng-template
. Ниже приведен альтернативный синтаксис, который также связывается с одной и той же переменной класса.
Если синтаксис else else:
<button (click)="shown = !shown">toggle 'shown' variable</button>
<div *ngIf="shown; then primaryBlock; else secondaryBlock"></div>
<ng-template #primaryBlock>If shown</ng-template>
<ng-template #secondaryBlock>else not shown</ng-template>
-
асинхронно
Класс:
userObservable = new Subject<{first: string, last: string}>();
onButtonClick() {
this.userObservable.next({first: 'John', last: 'Smith'});
}
шаблон:
<button (click)="onButtonClick()">Display User</button>
<div *ngIf="userObservable | async as user; else loading">
Hello {{user.last}}, {{user.first}}!
</div>
<ng-template #loading>Waiting for click...</ng-template>