是什么?在角度5中意味着什么?

时间:2018-07-31 14:02:09

标签: angular

我知道如果我有类似product.id == 1的东西吗?东西:不是东西。这意味着如果id = 1,则选择“填充”。如果不是,则选择“不是东西”。以下是什么意思:

product?.id.name

4 个答案:

答案 0 :(得分:13)

从字面上看,这意味着:

((product == null) ? null: product.id.name)

因此,如果product为null,则返回null,否则返回整个值。

enter image description here

如果我们有:

product?.id?.name

那么我们应该期待像这样的东西:

((product == null) ? null: ((product.id == null) ? null: product.id.name))

如果您有疑问,则可以随时检查角度编译器后的外观:

有关更多详细信息,请参阅文档:

答案 1 :(得分:11)

? 表示安全 navigation operator

来自 Docs

  

Angular安全导航操作符(?。)流畅且方便   防止属性路径中的空值和未定义值的方法。这里   是的,如果currentHero为   空。

这特别意味着,如果您绑定到视图的值为null,则它应该返回null,否则返回实际值,这样在渲染模板时不会出现任何问题。

在您提供的上述示例代码中,

product?.id.name

它检查生产对象是否存在,然后将检查是否有一个id。 因为您在id后没有 ? it will throw an error "cannot read property of 'name' undefined".

答案 2 :(得分:3)

product && product.id.name的语法糖只是

答案 3 :(得分:1)

角度安全导航运算符(?。)防止导航抛出null或未定义的组件属性

让我们假设您的组件中有一个名为AutoMapper的属性,它是cfg.CreateMap<ObjectB, ObjectA>() .ForMember(dest => dest.PropertyA, m => m.Condition(source => source.PropertyA != "SomeValue")) .ForMember(dest => dest.PropertyB, m => m.Condition(source => source.PropertyA != "SomeVAlue" ? source.PropertyB : ignore)) person

null