Ответ 1
Вы должны заключить привязку своего ввода в простые кавычки, например
[myColor]="'red'"
Это привяжет строку red
к myColor
. Если вы удалите простые кавычки, он будет искать свойство класса с именем red
, которое не существует, поэтому оно возвращает undefined
Вы можете сделать это, как я упоминал выше, или вы можете создать свойство класса с именем red
. В этом случае он будет привязан к свойству класса.
@Component({
template: `<h1 myDR [myColor]="red" > Test </h1>`
})
export class App {
red: string = 'red';
}
Edit
Я забыл упомянуть, что доступ к DOM через nativeElement
не рекомендуется. Вы должны использовать Renderer, @HostBinding или host
в @Component
(последние два эквивалентны). Таким образом, у вас есть еще три варианта
- Использование свойства
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);
}