Как нам получить элементы DOM в Angular (версия 2.x и выше)? Основные функции, такие как addClass, removeClass и т. д., недоступны в машинописном тексте, так как же нам выполнять эти манипуляции с DOM в угловых компонентах? Пожалуйста, предложите, если есть. ТИА
Как выполнять манипуляции с DOM в компонентах Angular?
Ответы (2)
Вы можете получить доступ к своим элементам DOM с помощью декоратора ViewChild следующим образом:
@Component({
....
templateUrl: 'mytemplate.html'
})
export class MyComponent{
@ViewChild('selector') private someName;
constructor() {
//this is your dom
//this.someName.nativeElement
}
}
и в вашем классе шаблонов вы должны указать, кто этот селектор
<div #selector> </div>
или вы можете использовать класс ElementRef
import {Component, AfterViewInit,ElementRef} from "@angular/core";
export class MyComponent implements AfterViewInit {
constructor(protected elementRef: ElementRef) {
}
ngAfterViewInit() {
//you can reach your dom element by using
//this.elementRef.nativeElement
}
}
Вы можете свободно использовать сторонние библиотеки, такие как Jquery для addClass, removeClass в машинописном тексте.
Основные функции, такие как addClass, removeClass и т. д., недоступны в машинописном тексте.
Они доступны. Все, что можно сделать на JS, можно сделать и на TypeScript. Вы также можете использовать jQuery
, хотя его не рекомендуется использовать с Angular2.
Некоторое объяснение, как получить ссылку на элемент angular 2 / typescript: получение элемента в шаблоне
При этом в Angular2 вам следует избегать императивного изменения DOM, а вместо этого использовать привязку со структурными директивами, такими как *ngFor
, *ngIf
,..., привязку, например [class.class-name']="true"
, или директивы, такие как ngClass
.
Подробнее см. https://angular.io/docs/ts/latest/guide/