Что вы можете сделать, это:
Создайте пользовательскую директиву, которая будет принимать объект стиля. и внутри этой директивы вы можете получить ссылку на элемент хоста и изменить его стиль.
Вот Демо
И вот краткое объяснение.
Создайте директиву, которая будет принимать объект стиля.
import {Directive,TemplateRef,ElementRef,OnChanges,SimpleChanges,OnInit,Renderer2,DoCheck,Input} from "@angular/core";
@Directive({
selector: "[appSetStyle]"
})
export class SetStyleDirective implements OnInit, OnChanges {
@Input() appSetStyle: { [key: string]: any } = {};
constructor(private elementRef: ElementRef<HTMLElement>) {}
ngOnInit(): void {}
ngOnChanges(changes: SimpleChanges): void {
this.applyStyles();
}
applyStyles(): void {
if (this.appSetStyle) {
for (const key in this.appSetStyle) {
this.elementRef.nativeElement.style[key] = this.appSetStyle[key];
}
}
}
}
Используйте этот объект стиля с любым элементом html или любым другим компонентом в вашем проекте.
<app-header [appSetStyle]="dynamicStyles"></app-header>
Если вы не хотите создавать директиву, вы можете вставить ElementRef
внутри самого компонента, который хотите стилизовать.
ElementRef - это то, что вам нужно, чтобы получить ссылку на хост.
Надеюсь, это поможет.