这个
ngSwitch
指令类似于
switch
ngSwitchCase
值等于
下一代交换机
变量。下面是一个例子
this Rangle.io article
:
<div [ngSwitch]="tab">
<app-tab-content *ngSwitchCase="1">Tab content 1</app-tab-content>
<app-tab-content *ngSwitchCase="2">Tab content 2</app-tab-content>
<app-tab-content *ngSwitchCase="3">Tab content 3</app-tab-content>
<app-tab-content *ngSwitchDefault>Select a tab</app-tab-content>
</div>
在您的例子中,一个表达式为每个
. 你最终得到的等价物是:
<li class="b-inBoxItem" *ngFor="let item of uploader.queue">
<div [ngSwitch]="item.file.name">
<span *ngSwitchCase="true" class="ic ic-file-image"></span>
<span *ngSwitchCase="false" class="ic ic-file-image"></span>
<span *ngSwitchCase="false" class="ic ic-file-stats"></span>
.
.
.
<span *ngSwitchDefault class="ic ic-file-empty"></span>
</div>
</li>
违约
span
显示的原因是
item.file.name
不等于
true
false
.
要使其工作,请在
下一代交换机
<li class="b-inBoxItem" *ngFor="let item of uploader.queue">
<div [ngSwitch]="getFileExtension(item.file.name)">
<span *ngSwitchCase="'png'" class="ic ic-file-image"></span>
<span *ngSwitchCase="'jpeg'" class="ic ic-file-image"></span>
<span *ngSwitchCase="'doc'" class="ic ic-file-stats"></span>
.
.
.
<span *ngSwitchDefault class="ic ic-file-empty"></span>
</div>
</li>
使用该方法(请参见
this post
):
getFileExtension(filename: string): string {
return filename.split('.').pop();
}
ngIf
:
<li class="b-inBoxItem" *ngFor="let item of uploader.queue">
<div>
<span *ngIf="item.file.name.includes('.png')" class="ic ic-file-image"></span>
<span *ngIf="item.file.name.includes('.jpeg')" class="ic ic-file-image"></span>
<span *ngIf="item.file.name.includes('.doc')" class="ic ic-file-stats"></span>
.
.
.
<span *ngIf="!item.file.name.includes('.png') && !item.file.name.includes('.jpeg') && !item.file.name.includes('.doc')" class="ic ic-file-empty"></span>
</div>
</li>