gpt4 book ai didi

angular - 在 Angular2 中使用 nativeElement 访问 DOM 有哪些好的替代方法?

转载 作者:太空狗 更新时间:2023-10-29 18:21:38 28 4
gpt4 key购买 nike

以下面的代码为例,这些代码是使用 nativeElement 访问 DOM 的很好的替代方法

import {Component, Directive, Input, ElementRef} from 'angular2/core';

@Directive({
selector: '[myDR]',
host:{
'(mouseenter)' : ' mouseEnter()'
}
})

export class MyDi {

@Input () myColor: string;

constructor(private el:ElementRef) {

}

mouseEnter(){

this.el.nativeElement.style.backgroundColor = this.myColor;

console.log(this.myColor);
}
}

这是一个 Plunker 为您测试更轻松。

最佳答案

由于不鼓励通过 nativeElement 直接访问 DOM,因此您有三个选择

  • 使用 host 属性(这将立即设置颜色)
@Directive({
host:{
'(mouseenter)' : ' mouseEnter()',
'[style.background-color]' : 'myColor'
}
})

mouseEnter(){
this.myColor = 'blue';
}
  • 使用@HostBinding(这种情况会立即设置颜色)
@HostBinding('style.background-color') get color {
return this.myColor;
}

mouseEnter(){
this.myColor = 'blue';
}
  • 使用 Renderer(使用它代替 nativeElement.style = 'value')
constructor(public renderer: Renderer, public element: ElementRef) {}

mouseEnter(){
this.renderer.setElementStyle(this.element.nativeElement, 'background-color', this.myColor);
}

注意 host@HostBinding 是等价的。

关于angular - 在 Angular2 中使用 nativeElement 访问 DOM 有哪些好的替代方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36108995/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com