Angular 8 - 如何通过属性查询 DOM 元素?

马塞尔 f

我有一个使用 renderer2 动态生成的 HTML 5 表:

const td = this.renderer.createElement('td');
this.renderer.setProperty(td, 'id', letter + i);
this.renderer.setAttribute(td, 'contenteditable', 'true');
this.renderer.setAttribute(td, 'r', i + '');
this.renderer.setAttribute(td, 'c', j + '');

该表具有以下结构

<table _ngcontent-iji-c1="" appcreatereport="">
<tr _ngcontent-iji-c1="">
<td _ngcontent-iji-c1="">1</td>
<td _ngcontent-iji-c1="" id="A1" contenteditable="true" r="1" c="1"></td>
<td _ngcontent-iji-c1="" id="B1" contenteditable="true" r="1" c="2"></td>
<td _ngcontent-iji-c1="" id="C1" contenteditable="true" r="1" c="3"></td>
<td _ngcontent-iji-c1="" id="D1" contenteditable="true" r="1" c="4"></td>
<td _ngcontent-iji-c1="" id="E1" contenteditable="true" r="1" c="5"></td>
</tr>
...

每个<td>都有一个“id”,一个行号“r”和一个列号“c”

我正在尝试只使用 angular(所以没有 jquery)并且我已经查看了许多现有的数据网格,但是它们从来没有完全涵盖我计划做的事情,并且扩展它们似乎比构建我需要的东西更复杂。

我有两个问题。

  1. 我的理解是,我不应该直接在 Angular 中操作 DOM,如果元素没有本地引用,我如何访问它们?(或者当我<td在 renderer2 中生成> 元素时如何添加本地引用。文本<TD>需要更新,例如当我从 excel 进行复制/粘贴时。
  2. 如何通过属性查询元素,所以我想要 r=1 和 c=4 的元素(而不是通过 id“D1”查询)。我只发现 @ViewChild 只适用于引用。

我目前正在通过以下方式设置 TD 元素的文本:

(document.getElementById(
          'C1'
        ) as HTMLTableDataCellElement).innerHTML = '123;

我怎样才能以更“角度”的方式做到这一点?

亚历克斯·沃夫丘克

最好的方法是更改​​设计以使用带有元素数组和*ngFor. 要将其从页面中删除,您可以使用*ngIf="elements.length === 0";

let elements = [{r:1, c: 1, value:''}, {r:1, c: 2, value:''} ... ];
elements[1].value = '123';

<td *ngFor="let el of elements" [r] = "el.r" [c]="el.c">{{el.value}}<\td>

在这种情况下,您可以td直接使用元素数组访问每个值。

作为替代方案 -ng-template可用于将表格保存在 html 中,但在需要时才显示。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

查询 dom 元素的属性 Angular 4

来自分类Dev

滚动到 DOM 中元素的顶部 - Angular 8

来自分类Dev

如何在Angular2 Dart中查询Dom元素?

来自分类Dev

如何使用Angular操作DOM元素

来自分类Dev

如何使用angular更新DOM元素

来自分类Dev

如何通过jQuery的.append()添加DOM元素(Angular指令)?

来自分类Dev

Angular:DOM中的条件元素?

来自分类Dev

从 DOM 获取元素 - Angular 4

来自分类Dev

如何在Angular指令中访问dom元素

来自分类Dev

Angular2 + Typescript:如何操作DOM元素?

来自分类Dev

如何在Angular2中获取(DOM)元素的宽度

来自分类Dev

如何访问Angular DOM对象中的某些元素

来自分类Dev

如何传递在 angular2/4 中点击的 dom 元素?

来自分类Dev

如何激活 dom 元素中的点击事件(Angular 2)

来自分类Dev

Vanilla JavaScript:如何通过函数参数访问DOM元素属性?

来自分类Dev

如何使用dom元素

来自分类Dev

如何显示 DOM 元素

来自分类Dev

当元素在Angular / Typescript中的DOM中折叠时,如何获取元素的高度

来自分类Dev

Angular:如何根据模型中过滤元素的数量隐藏DOM元素?

来自分类Dev

如何通过其索引选择DOM元素

来自分类Dev

如何通过jquery读取dom元素值

来自分类Dev

如何通过 shadow DOM 访问元素

来自分类Dev

如何通过遍历DOM获取元素的值

来自分类Dev

Angular ng-if保存对DOM元素的引用

来自分类Dev

Angular 2.x选择DOM元素

来自分类Dev

原生DOM元素的Angular 2 onload事件

来自分类Dev

在Angular中操作组件的DOM元素

来自分类Dev

在Angular中绑定不同的dom元素

来自分类Dev

angular.element()找不到DOM元素