如果0在angular2中使用elvis运算符,则值错误

如果0在angular2中使用elvis运算符,则值错误,angular,Angular,假设我正在访问和显示html格式的数据,如下所示 {{whole_data?.age_range ? whole_data?.age_range : '-'}} 现在的问题是,如果在案例中整个\u数据?.age\u range被计算为0或null,它将始终显示-,除了表达式值为非零或非null 我的问题是 为什么会这样(在这种情况下零被视为假) 同一个项目的备选方案是什么 PS:-我不想特别在检查值是否为零时使用condition,因为我在代码中使用了1000次这种语法您可以缩短模板表达式,但

假设我正在访问和显示html格式的数据,如下所示

{{whole_data?.age_range ? whole_data?.age_range : '-'}}
现在的问题是,如果在案例中
整个\u数据?.age\u range
被计算为
0
null
,它将始终显示
-
,除了表达式值为非零或非null

我的问题是

  • 为什么会这样(在这种情况下零被视为假)

  • 同一个项目的备选方案是什么


  • PS:-我不想特别在检查值是否为零时使用condition,因为我在代码中使用了1000次这种语法

    您可以缩短模板表达式,但它会产生相同的结果:

    {{whole_data?.age_range || '-'}}
    
    没有别的办法<代码>0的计算结果始终为false。应使用管道防止代码重复:

    @Pipe({
        name: "dashNumber"
    })
    export class DashNumber implements PipeTransform {
    
        transform(value: number): number {
            value = parseFloat(value);
            return isNaN(value) ? '-' : value;
        }
    
    }
    
    用法:

    {{whole_data?.age_range | dashNumber}}
    

    您可以缩短模板表达式,但其结果相同:

    {{whole_data?.age_range || '-'}}
    
    没有别的办法<代码>0的计算结果始终为false。应使用管道防止代码重复:

    @Pipe({
        name: "dashNumber"
    })
    export class DashNumber implements PipeTransform {
    
        transform(value: number): number {
            value = parseFloat(value);
            return isNaN(value) ? '-' : value;
        }
    
    }
    
    用法:

    {{whole_data?.age_range | dashNumber}}
    

    谢谢你的提示@PierreDuc,但这根本解决不了我的问题,
    {whole_data?.age_range | | | |-'}
    @PardeepJain那么你的问题是什么:)谢谢提示@PierreDuc,但这根本解决不了我的问题,+1对于
    {whole_data?.age| range | |-'}
    @PardeepJain那么你的问题是什么:)