【问题标题】:Using Elvis Operator within String Interpolated Expressions in Angular 2在 Angular 2 的字符串插值表达式中使用 Elvis 运算符
【发布时间】:2017-01-13 02:25:47
【问题描述】:

在我的 Angular 2 应用程序中,我使用字符串插值从 mongoDB 中提取数据。现在服务器/数据库在不断变化,所以有时这会破坏我的客户端显示,因为例如,如果我通过字符串插值提取数据,如下所示:

{{record.addresses[0].zipCode}}

...然后,稍后,数据在数据库中的组织方式发生了变化,这将破坏我的显示 - 因为客户端正试图从不再存在的字段中提取。所以我认为我应该能够在这样的用例中使用像 elvis 运算符这样的东西。这样,如果数据在客户端正在查找的位置,它将打印到屏幕上。但是,如果数据不在其要查找的位置,它将完全忽略该字段 - 不会破坏显示中的任何内容。

那么,简而言之,我将如何在上面的表达式上实现 elvis 运算符?

【问题讨论】:

    标签: javascript angular typescript string-interpolation


    【解决方案1】:

    你可以这样使用它:

    {{record?.addresses[0]?.zipCode}}
    

    这将检查是否定义了record,然后检查addresses[0] 是否定义在record object 下,然后检查zipCode 是否定义在该对象下

    【讨论】:

    • 你不能检查addresses[0]是否是这样定义的,因为安全导航运算符不能用于数组元素。
    • @StefanSvrkota 谢谢你的警告,我有点赶时间。我会尽快测试它。同时我会删除答案。
    • 实际上,这非常有效。谢谢,回声。在我最初的实现中,表达式中只有一个问号。在第一个元素之后添加额外的问号使其工作。谢谢!
    • 等等,你可以使用addresses[0]?.zipCode吗?那么他们最近肯定改变了,我知道一两个月前不是这样的。
    • 我在一个数组元素上使用它,它似乎工作正常。
    猜你喜欢
    • 2017-07-22
    • 2018-04-11
    • 1970-01-01
    • 1970-01-01
    • 2022-01-20
    • 1970-01-01
    • 2018-07-20
    • 1970-01-01
    • 2020-09-16
    相关资源
    最近更新 更多