如何在Angular模板中访问动态条件嵌套对象属性?
Angular *ngIf 中可选链的正确使用
问题场景:尝试用
*ngIf="charts.data['key with space']?[dynamicKey] !== undefined"做判断时,编译器会把?识别成三元运算符,导致语法错误;而拆分写成*ngIf="charts.data['key with space'] && charts.data['key with space'][dynamicKey] !== undefined"又会在长属性链中显得冗余、可读性差。解决方案:使用可选链操作符的正确语法
?.,替代错误的单问号写法:*ngIf="charts.data['key with space']?.[dynamicKey] !== undefined"原理说明:
可选链?.会先校验左侧的charts.data['key with space']是否为null或undefined,只有当它存在时,才会继续访问后面的[dynamicKey]属性。这样既避免了重复书写冗长的属性链,又能安全地处理空值场景,同时不会被编译器误判为三元运算符。
内容的提问来源于stack exchange,提问作者RobSeg
相关产品推荐
相关产品推荐

