Angular * ngSwitchCase未执行

时间:2017-10-17 10:26:37

标签: angular ng-switch

我是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>

3 个答案:

答案 0 :(得分:1)

*ngSwitchCase个表达式包含在''中以使其strings。该比较将与===一起使用,因此会将stringstring进行比较。在您的情况下,它将找到名为radiotext的成员,并获取未定义的值。

<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。

https://angular.io/api/common/NgSwitchCase