Switch语句不适用于某些变量

时间:2017-12-05 08:54:02

标签: javascript node.js angular typescript

我想让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"

3 个答案:

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