我想让Angular2 Pipe根据传递的变量返回不同的值。变量device.display
可以是不同类型(对象或字符串),只需要两个值null
和"dataTime"
。
组件部分:
<div class="col col-2">{{values[variable.id] | display: device.display}}</div>
管:
Pipe
import { Pipe } from '@angular/core';
@Pipe({
name: 'display'
})
export class DisplayPipe {
transform(value: any, display: string): string {
display = String(display);
switch (display) {
case 'dateTime': {
value = value * 60;
}
case 'null': {
value = value;
}
default: value = 'abc';
}
return value;
}
}
我确定在将变量解析为String后,它等于"null"
或"dateTime"
。我用console.log
检查了它。
问题是switch语句总是返回默认值:"abc"
。
答案 0 :(得分:2)
错误的语法。在每种情况下,您都不需要括号,而您忘记了break;
语句。
以下是一个关于如何构建交换机案例的例子:
switch (new Date().getDay()) {
case 0:
day = "Sunday";
break;
case 1:
day = "Monday";
break;
case 2:
day = "Tuesday";
break;
case 3:
day = "Wednesday";
break;
case 4:
day = "Thursday";
break;
case 5:
day = "Friday";
break;
case 6:
day = "Saturday";
}
答案 1 :(得分:0)
对于开关来说,这不是正确的sintaxis:
switch (display) {
case 'dateTime':
value = value * 60;
break;
case 'null':
value = value;
break;
default:
value = 'abc';
}
如果你不打破每个案例,switch会执行所有情况,然后你如何在所有情况下设置相同的变量,值是最后一种情况默认值:abc。
答案 2 :(得分:0)
如果你错过了Javascript fall-through condition will happen中的break语句,那么默认语句就会执行,而值总是&#34; abc&#34;