NgStyle будет идеальным вариантом, но если вам нужно придерживаться своей модели исполнения, вы можете попробовать использовать CSS-переменные для установки поля.
Найдите демонстрацию Stackblitz , где цвет изменяется аналогичным образом.
hello.component.ts
import { Component, Input, ElementRef, OnInit } from '@angular/core';
@Component({
selector: 'hello',
template: `<h1>Hello {{name}}!</h1>`,
styles: [`h1 {
font-family: Lato;
color: var(--hello-color);
}`]
})
export class HelloComponent implements OnInit {
@Input() color: string;
constructor(public element: ElementRef) {
}
ngOnInit() {
this.element.nativeElement.querySelector('h1').style.setProperty('--hello-color', this.color);
}
}
.css
/* Add application styles & imports to this file! */
:root{
--hello-color: red;
}
app.component.html
<hello color="{{ color }}"></hello>
<p>
Start editing to see some magic happen :)
</p>