我是Angular的新手。我在我的程序中使用ngSwitch
,但每次运行程序时*ngSwitchDefault
执行而不是*ngSwitchCase
。这是代码:
<select [(ngModel)]="selectedControl" class="form-control">
<option *ngFor="let inputControl of inputArray; let i=index"
[value]="inputControl">{{inputArray[i]}}</option>
</select>
<span [ngSwitch]="selectedControl">
<span *ngSwitchCase="text">
<p>text is selected</p>
</span>
<span *ngSwitchCase="radio">
<p>radio is selected</p>
</span>
<span *ngSwitchDefault>
<p>Default value</p>
</span>
</span>
答案 0 :(得分:1)
将*ngSwitchCase
个表达式包含在''
中以使其strings
。该比较将与===
一起使用,因此会将string
与string
进行比较。在您的情况下,它将找到名为radio
或text
的成员,并获取未定义的值。
<span [ngSwitch]="selectedControl">
<span *ngSwitchCase="'text'">
<!-- ^----^ -->
<p>text is selected</p>
</span>
<span *ngSwitchCase="'radio'">
<!-- ^-----^ -->
<p>radio is selected</p>
</span>
<span *ngSwitchDefault>
<p>Default value</p>
</span>
</span>
答案 1 :(得分:0)
根据https://angular.io/api/common/NgSwitchCase clear
input int id byte(is_a time) str3 co_id
111 0 10 "abc"
111 0 10 "abc"
111 1 11 "xzx"
111 1 11 "xzx"
111 1 12 "xzx"
111 1 12 "xzx"
222 0 10 "xzx"
222 0 10 "xzx"
222 0 11 "xzx"
222 0 11 "xzx"
222 0 12 "xzx"
222 0 12 "xzx"
777 1 13 "xzx"
end
期望ngSwitchCase
而不是expression
。
如果您想使用硬编码字符串,请将string
替换为*ngSwitchCase="text"
答案 2 :(得分:0)
与使用严格相等的JavaScript不同,Angular使用松散 平等。 这意味着空字符串“”匹配0。