如何在ngSwitch
和ngSwitchWhen
中检测未定义?
我在下面尝试了这三种方法,但都不起作用。它始终显示未定义。
由于
<div [ngSwitch]="value">
<p *ngSwitchWhen="undefined">11</p>
<p *ngSwitchWhen="'undefined'">22</p>
<p *ngSwitchWhen="">33</p>
<p *ngSwitchDefault>Not undefined</p>
</div>
value: string;
更新
@basarat指出了为什么会这样,请关注此更多详情:
https://github.com/angular/angular/issues/7637#issuecomment-197619354
答案 0 :(得分:1)
在模板https://github.com/angular/angular/issues/7625
中有一个支持undefined
的未解决问题
从RC.2开始不起作用
未经测试,但我认为这可以满足您的需求
<template [ngSwitchCase]="undefined">22</template>
<!-- <= RC.1 versions -->
<template [ngSwitchWhen]="undefined">22</template>
您对字符串undefined的前两个ngSwitch
测试。
答案 1 :(得分:1)
问题是$sum_total
使用了角度ngSwitchWhen
检查,该检查已损坏,如下例所示:
===
import {
bootstrap,
Component,
View,
NgSwitch,
NgSwitchWhen,
NgSwitchDefault
} from 'angular2/angular2';
@Component({
selector: 'app',
})
@View({
template: `
<p>Value = {{value === undefined}}</p>
<p>Value = {{value == undefined}}</p>
<div [ng-switch]="value">
<p *ng-switch-when="undefined">UNDEFINED</p>
<p *ng-switch-default>DEF</p>
</div>
`,
directives: [NgSwitch, NgSwitchWhen, NgSwitchDefault]
})
export class App {
value = undefined;
}
bootstrap(App)
.catch(err => console.error(err));
显示为false,但=== undefined
显示为true。
以下是plunkr:http://plnkr.co/edit/DQMTII95CbuqWrl3lYAs?p=preview
答案 2 :(得分:0)
使用ngSwitchCase而不是ngSwitchWhen。 那就行了。