Angular - 在 属性 绑定中使用字符串变量访问对象属性
Angular - Access to object attribute with a string variable in property binding
我想使用字符串“attribute”作为键来访问“anim.animals”对象中字段的值。
“anim”是一个 Response 类型的对象,其中包含字符串“attribute”和一个动物类型的数组“animals”。
(你以后可以因为命名 类 和变量打我啊哈)
正如您从我正在遍历数组以访问动物参数的代码片段中看到的那样,其中一个参数由字符串“attribute”标识。
<div class="col-sm" *ngFor="let a of anim.animals">
<a>{{a.name}}</a><br>
<a *ngIf="feedback == 'Wrong'">{{a[attribute as keyof typeof animal]}}</a>
</div>
都试图用点访问它并以这种报告的方式(我在互联网上找到但还不太了解)出现错误:
- 错误 NG5002:解析器错误:[{{a[attribute as keyof animal]}]
中第 13 列缺少预期的 ]
- 错误 TS7053:元素隐式具有 'any' 类型,因为类型 'string' 的表达式不能用于索引类型 'animal'。在类型 'animal
上找不到参数类型为 'string' 的索引签名
你知道我如何解决这个问题吗(也许不会打乱一切)?
谢谢
如果属性是键名
<div class="col-sm" *ngFor="let a of anim.animals">
<a>{{a.name}}</a><br>
<a *ngIf="feedback == 'Wrong'">{{$any(a).attribute}}</a>
</div>
或
<div class="col-sm" *ngFor="let a of anim.animals">
<a>{{a.name}}</a><br>
<a *ngIf="feedback == 'Wrong'">{{a['attribute']}</a>
</div>
如果属性是一个包含键名的变量
<div class="col-sm" *ngFor="let a of anim.animals">
<a>{{a.name}}</a><br>
<a *ngIf="feedback == 'Wrong'">{{$any(a)[attribute]}</a>
</div>
我想使用字符串“attribute”作为键来访问“anim.animals”对象中字段的值。
“anim”是一个 Response 类型的对象,其中包含字符串“attribute”和一个动物类型的数组“animals”。
(你以后可以因为命名 类 和变量打我啊哈)
正如您从我正在遍历数组以访问动物参数的代码片段中看到的那样,其中一个参数由字符串“attribute”标识。
<div class="col-sm" *ngFor="let a of anim.animals">
<a>{{a.name}}</a><br>
<a *ngIf="feedback == 'Wrong'">{{a[attribute as keyof typeof animal]}}</a>
</div>
都试图用点访问它并以这种报告的方式(我在互联网上找到但还不太了解)出现错误:
- 错误 NG5002:解析器错误:[{{a[attribute as keyof animal]}] 中第 13 列缺少预期的 ]
- 错误 TS7053:元素隐式具有 'any' 类型,因为类型 'string' 的表达式不能用于索引类型 'animal'。在类型 'animal 上找不到参数类型为 'string' 的索引签名
你知道我如何解决这个问题吗(也许不会打乱一切)? 谢谢
如果属性是键名
<div class="col-sm" *ngFor="let a of anim.animals">
<a>{{a.name}}</a><br>
<a *ngIf="feedback == 'Wrong'">{{$any(a).attribute}}</a>
</div>
或
<div class="col-sm" *ngFor="let a of anim.animals">
<a>{{a.name}}</a><br>
<a *ngIf="feedback == 'Wrong'">{{a['attribute']}</a>
</div>
如果属性是一个包含键名的变量
<div class="col-sm" *ngFor="let a of anim.animals">
<a>{{a.name}}</a><br>
<a *ngIf="feedback == 'Wrong'">{{$any(a)[attribute]}</a>
</div>