首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Angular2中给出动态id方法的区别

Angular2中给出动态id方法的区别
EN

Stack Overflow用户
提问于 2021-10-15 06:27:49
回答 2查看 67关注 0票数 1

我的问题是,这三种方法有什么区别:

  • [id]="item.id"
  • [attr.id]="item.id
  • id={{item.id}}

哪种方法是最好的?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-10-15 07:11:03

id="item.id“和id=”{item.id}“都将输出相同的结果,因为这两种方法都可以将变量绑定到模板。[]使用约束正弦税和{} 迭代法。据我所知,这两种用途都可以,这取决于您的喜好。

另一方面,attr.id="id“可能会给您带来不同的结果。这将把变量id的值放到html的属性ID中。如果变量是id=1234。

代码语言:javascript
运行
复制
<div [attr.id]="id"></div> => <div id="1234"></div>

但是,如果您有一个输入名为"id“的组件,如:

代码语言:javascript
运行
复制
import { Component, Input } from '@angular/core';

@Component({
  selector: 'hello-world',
  template: `<h1>Hello your ID is: {{id}}</h1>`,
  styles: [`h1 { font-family: Lato; }`],
})
export class HelloComponent {
  @Input() id: string;
}

使用attr.id与使用id不一样。

  • id将填充名为"id“的组件的输入变量
  • attr.id将定义HTML属性"id“

希望这能帮你解决问题。

票数 0
EN

Stack Overflow用户

发布于 2021-10-15 08:02:05

您需要知道属性和属性之间的区别。

第一个是属性绑定,它通常用于绑定到动态HTML属性。它的正确用例是第一个示例[id]="item.id",其中的HTML属性是ID。

第三个是文本插值,通常用于“将动态字符串值合并到您的HTML模板中”。正确的用例应该是<p>Audi has sold {{totalCarsSold}} cars in 2021</p>,其中在组件中定义了totalCarsSold。尽管第三种方法也能工作,但在绑定HTML属性时不建议使用它。

然而,第二个问题是属性绑定。由于角使用属性绑定,它无法“理解”作为属性绑定的属性的角色。因此,必须使用前缀.attr来告诉角,这是正在使用的属性。例如,在下面的动态进度栏中,

<div style="width: {{progress}}%" [attr.aria-valuenow]="progress"> {{progress}}% </div>,因为aria是一个属性,所以它必须以.attr作为前缀,否则角抛出一个错误Can't bind to 'aria-valuenow' since it isn't a known property of 'div'

一定要检查上面的链接以获得详细的用例,或者在相同的关于堆叠溢出的答案上。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69580685

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档