如何在ngSwitch和ngSwitch中检测未定义? (Angular 2)

时间:2016-03-16 18:47:15

标签: typescript angular

如何在ngSwitchngSwitchWhen中检测未定义

我在下面尝试了这三种方法,但都不起作用。它始终显示未定义

由于

<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

3 个答案:

答案 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

更多

建议您在此处报告:https://github.com/angular/angular/issues

答案 2 :(得分:0)

使用ngSwitchCase而不是ngSwitchWhen。 那就行了。