带有括号属性访问器的安全导航操作符

Jes*_*per 1 properties safe-navigation-operator angular

我遇到过无法使用点表示法访问属性的情况,因为属性的名称包含点。

我有一个名为 的对象translations,其属性包含字符串翻译,例如该Tooltip.O2属性包含图像工具提示的翻译:

<img [matTooltip]="translations?.Tooltip.O2" [src]="bed.additionalO2 ? medO2 : noO2">
Run Code Online (Sandbox Code Playgroud)

当我这样做时,它认为我正在尝试访问带有属性的Tooltip内部对象。我知道我可以使用括号表示法来访问它:translationsO2

[matTooltip]="translations['Tooltip.O2']"
Run Code Online (Sandbox Code Playgroud)

但是,安全导航运算符似乎不能?与括号表示法一起使用。我试图写translations?['Tooltip.O2'],但它导致了错误。

我想知道是否有一种方法可以使用点表示法访问该属性,或者是否有一种方法可以使用带有括号表示法的安全导航运算符?

Pav*_*atý 6

有一种方法可以使用带括号符号的安全导航运算符。实际上,安全导航运算符的正式名称是可选链运算符。文档中的语法:

obj.val?.prop
obj.val?.[expr]
obj.arr?.[索引]
obj.func?.(args)

所以在你的情况下你需要使用translations?.['Tooltip.O2'].