В Angular, Вы можете использовать другой подход.
1) Дайте некоторую ссылку #theadEl
на th
элемент, например,
<th *ngFor="let item of array" #theadEl> {{item}}</th>
2) Затем в файле ts
выполните импорт из @angular/core
, например,
import { Component, ViewChildren, ElementRef, QueryList,
AfterViewInit } from '@angular/core';
3) Вам необходимо использовать viewChildren вместе с QueryList , если мы пытаемся получить несколько таких элементов, как,
@ViewChildren('theadEl') theadEl: QueryList<ElementRef>
4) Тогда в ngAfterViewInit ловушке жизненного цикла вы можете достичь результата, используя
ngAfterViewInit(): void {
const cells = this.theadEl.toArray();
console.log(cells[1].nativeElement);
console.log(cells[1].nativeElement.innerHTML);
}
Наконец,
компонент. html
<table >
<thead>
<tr>
<th *ngFor="let item of array" #theadEl> {{item}}</th>
</tr>
</thead>
</table>
component.ts
import { Component, ViewChildren, ElementRef, QueryList,
AfterViewInit } from '@angular/core';
@Component({
selector: 'my-app',
templateUrl: './app.component.html',
styleUrls: [ './app.component.css' ]
})
export class AppComponent {
name = 'Angular 4';
array = [1,2,3,4];
@ViewChildren('theadEl') theadEl: QueryList<ElementRef>
ngAfterViewInit(): void {
const cells = this.theadEl.toArray();
console.log(cells[1].nativeElement);
console.log(cells[1].nativeElement.innerHTML);
}
}
Рабочие Stackblitz Здесь ...
Примечание: Выше приведен лучший способ использования, но, тем не менее, если вы хотите использовать тот же метод, что и document.getElementsByTagName('th');
, то вам нужно сделать код в ngAfterViewInit
ловушка жизненного цикла, как показано в примере ниже.
Stackblitz с document.getElemen Метод tsByTagName ('th')
Причина использования ngAfterViewInit
состоит в том, что он полностью инициализирует представление компонента.