You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Angular中如何动态生成唯一HTML元素ID?

问题解决方法

你的错误出在[id]属性绑定的语法上,不能把拼接符号+放在绑定表达式外面,浏览器会把+识别成无效的属性名,导致运行报错。

正确的写法是把完整的拼接逻辑放在[id]的绑定表达式内部:

方案1:直接拼接属性值

如果implementor是组件类里定义的属性,直接在绑定表达式里完成拼接:

<div
*ngFor="let row of rows"
title="{{ row.text }}">
<span
    [id]="tag.index + implementor"
    tabIndex="0">
    {{ row.text }}
</span>
</div>

方案2:使用模板字符串(更规范)

为了让ID格式更清晰,避免无分隔符拼接带来的混淆,推荐用ES6模板字符串语法,给拼接内容加上分隔符(比如-):

<div
*ngFor="let row of rows"
title="{{ row.text }}">
<span
    [id]="`${tag.index}-${implementor}`"
    tabIndex="0">
    {{ row.text }}
</span>
</div>

额外注意

另外检查tag.index的有效性:如果是*ngFor循环的索引,通常应该用*ngFor="let row of rows; let i = index",然后用i代替tag.index,确保索引变量正确。

内容的提问来源于stack exchange,提问作者Mark

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 03:05:56