1

我遇到了无法使用点符号访问属性的情况,因为属性的名称包含一个点。

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

<img [matTooltip]="translations?.Tooltip.O2" [src]="bed.additionalO2 ? medO2 : noO2">

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

[matTooltip]="translations['Tooltip.O2']"

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

我想知道是否有办法使用点符号访问属性,或者是否有办法使用带括号符号的安全导航运算符?

4

4 回答 4

4

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

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

因此,在您的情况下,您需要使用translations?.['Tooltip.O2'].

于 2020-11-20T19:45:15.247 回答
0

我所做的是以下内容:

[matTooltip]="translations ? translations['Tooltip.O2'] : null"
于 2018-01-19T22:20:28.223 回答
0

您可以使用条件运算符进行null检查

[matTooltip]="translations ? translations['Tooltip.O2'] : null"
于 2019-08-07T07:07:43.997 回答
0

你能初始化翻译obj吗?它将避免任何错误。

translations = {}
于 2018-01-19T22:22:59.723 回答