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

AngularJS迁移至Angular10时td元素data-link绑定报错如何解决?

AngularJS迁移Angular 10 data-link绑定问题解决方案

原代码中data-link的作用

  • 属于HTML标准的data-*自定义属性,用于在DOM元素上存储业务自定义数据
  • 这段代码里是给每个单元格、单元格内的子元素分别绑定对应的跳转标识,点击整行触发跳转逻辑时,可以直接读取点击位置元素的data-link值,拿到对应需要传递到目标页面的参数,区分用户点击的是表格的哪个区域,从而传递不同的参数。

报错原因

解决方法

只需要在绑定时加上attr.前缀,明确告诉Angular你要绑定的是HTML attribute而非DOM property即可,同时把原有AngularJS的语法替换为Angular 10的对应语法:

  • ng-repeat替换为*ngFor
  • ng-click替换为(click)
  • 插值绑定{{}}在[attr.xxx]中直接写表达式即可,不需要再加双大括号

改造后的代码如下:

<tr *ngFor="let data of responseData" (click)="goToSummary(data, $event)">
    <td [attr.data-link]="data.Description">
        <span [attr.data-link]="data.Description">
            {{data.Description}}
        </span>
    </td>
    <td [attr.data-link]="data.Description + 'propA'">
        <div [attr.data-link]="data.Description + 'propA'" >{{data.propA}}</div>
        <span [attr.data-link]="data.Description + 'propA_' + 'Priority'">{{data.propACount}}</span>
    </td>
    <td [attr.data-link]="data.Description + 'propB'">
        <div [attr.data-link]="data.Description + 'propB'" >{{data.propB}}</div>
        <span [attr.data-link]="data.Description + 'propB_' + 'Priority'">{{data.propBCount}}</span>
    </td>
 </tr>

如果需要在goToSummary方法中获取点击元素的data-link值,可以通过传入的$event对象读取:

goToSummary(data: any, event: Event) {
  const targetEl = event.target as HTMLElement;
  const linkValue = targetEl.getAttribute('data-link');
  // 后续业务逻辑,携带linkValue和data参数跳转
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 18:09:02