javascript - Angular2中给出动态id方法的区别
问题描述
我的问题是这三种方法有什么区别:
[id]="item.id"
[attr.id]="item.id
id={{item.id}}
哪种方法最好?
解决方案
您将需要知道属性和属性之间的区别
第一个是属性绑定,通常用于绑定到动态HTML 属性。它的正确用例是第一个示例[id]="item.id"
,其中 HTML 属性是 ID
第三个是文本插值,通常用于“将动态字符串值合并到您的 HTML 模板中”。正确的用例应该是<p>Audi has sold {{totalCarsSold}} cars in 2021</p>
, wheretotalCarsSold
在你的组件中定义。尽管第三个也可以,但不建议在绑定 HTML 属性时使用。
然而,第二个是属性绑定。由于 Angular 使用属性绑定,它无法“理解”已绑定为属性的属性的作用。.attr
因此,必须使用前缀来告诉 Angular 这是正在使用的属性。例如,在下面的动态进度条的情况下,
<div style="width: {{progress}}%" [attr.aria-valuenow]="progress"> {{progress}}% </div>
由于 aria 是一个属性,它必须以 为前缀.attr
,否则 angular 会抛出错误Can't bind to 'aria-valuenow' since it isn't a known property of 'div'
请务必查看上面的链接以获取详细的用例,或者查看 stackoverflow上的这个答案
推荐阅读
- sqlalchemy - 在经典映射样式中使用多态类
- oracle - Oracle 远程包/过程的同义词
- node.js - 错误:EINVAL:无效参数,mkdir 'C:\Users\user\'C:\Users\User\AppData\Roaming\npm
- firebase - Flutter 移动应用和 VueJS Web 应用使用相同的 Firebase 后端
- json - 如何在 Swift 中进行签名 API 调用
- reactjs - 在文本字段中输入数据时,React redux 渲染时缺少第一个对象
- karate - 升级到空手道 1.0 时,Karate Runner 面临问题
- excel - 搜索单元格是否包含数组中的任何字符串并删除它们
- machine-learning - 对于 Pytorch 中的 Transformer 网络,tgt 和 src 必须具有相同的功能
- android - Android 应用间通信的仪器测试