【问题标题】:What is the meaning of question mark in expressions in Angular 2?Angular 2中表达式中问号的含义是什么?
【发布时间】:2020-02-12 16:52:31
【问题描述】:

values?.listArray 在这里是什么意思?具体来说,我对问号感兴趣。

[inputValue] = "values?.listArray"

【问题讨论】:

    标签: angular typescript


    【解决方案1】:

    编辑

    从最初的答案开始,Ecmascript 和 Typescript(在 3.7 中)都添加了 ?.(称为可选链接运算符)运算符。详情请见PR

    原答案

    这不是 Typescript 运算符。 Angular 2 在模板中有一个安全的导航操作符。

    values?.listArray
    

    等价于

    values != null ? values.listArray: null
    

    更多信息herehere

    【讨论】:

    • 有趣的是,您可以查看解析安全导航运算符的解析器的源代码,在源代码中也称为“条件(运算符)”:github.com/angular/angular/blob/…
    • 它也记录在 Angular 的备忘单上:angular.io/guide/cheatsheet
    • @Edric 10x,添加了答案的链接,现在?. 也是打字稿运算符。
    • 使用不正确? .ts 文件中的运算符?我的一位资深同事说?运算符只能在 html 中使用。是真的吗?
    【解决方案2】:

    ?“问号”不是打字稿中的三元运算符, ? 用于在组件生成文档以供浏览器显示时安全加载 HTML 文档。

    如果我们写list?.values,则表示如果list.values不为空,则显示,如果list.values为空,则不显示。在任何情况下,它都会加载相应的 HTML 部分而不会出现任何错误。

    【讨论】:

    • 它有什么价值吗?像范我一样fucntion()?.hello
    • noop's,它只是基于属性而不是基于功能
    【解决方案3】:

    总的来说,它避免了null异常。如果values对象有一个名为listArray的属性,那么listArray的值将被设置,否则将设置为null。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-06
      • 2011-04-20
      • 1970-01-01
      相关资源
      最近更新 更多