一个选项是使用template reference variable。
在下面的示例中,将参考变量#target
添加到所需元素,然后使用decorator @ViewChild
(@ViewChild('target') target
)可以访问组件中的变量。
从那里,您可以通过访问变量上的nativeElement
property来获取对DOM元素的引用。
这里就是类的名字被更新的例子:
import { Component, AfterViewInit, ViewChild } from '@angular/core';
@Component({
selector: 'main',
template: `
<div #target class="current">
</div>
`
})
export class MainComponent implements AfterViewInit {
@ViewChild('target') target;
constructor() { }
ngAfterViewInit(): void {
let element = this.target.nativeElement;
element.className = 'next';
}
}
然而,值得指出的是,你可以处理大多数的DOM操作与内置的DOM指令。在这种情况下,您可以使用ngClass
directive将变量绑定到类属性:
import { Component, AfterViewInit } from '@angular/core';
@Component({
selector: 'main',
template: `
<div [ngClass]="targetClass">
</div>
`
})
export class MainComponent implements AfterViewInit {
private targetClass: string = 'current';
constructor() { }
ngAfterViewInit(): void {
this.targetClass = 'next';
}
}
感谢Josh为您做出的快速响应。它的工作很好。 – mohsen
为什么你建议'@ViewChild('target')target;'而不是显式类型的@ViewChild('target')目标有什么特别的原因:QueryList;'? –
你也可以使用@HostBinding('class')私有targetClass来处理类的变化。 –