Я пытаюсь изменить некоторые из своих элементов, когда размер окна изменяется или когда он устанавливается на какое-то разрешение, когда я обновляю страницу.Итак ...
export class ResizeDirective {
constructor(
public renderer: Renderer2, public el: ElementRef,
) {
}
const element = document.getElementsByClassName('myElement'); // Can I have something like that? I get some error
@HostListener('window:resize') onResize() {
if (window.innerWidth < 920)
this.renderer.addClass(this.el.nativeElement, 'resized');
this.renderer.addClass(element, 'alsoResized');
} else {
this.renderer.removeClass(this.el.nativeElement, 'resized');
this.renderer.removeClass(element, 'alsoResized');
}
onInit() {
if (window.innerWidth < 920)
this.renderer.addClass(this.el.nativeElement, 'resized');
this.renderer.addClass(element, 'alsoResized');
} else {
this.renderer.removeClass(this.el.nativeElement, 'resized');
this.renderer.removeClass(element, 'alsoResized');
}
}
}
Как связать его с html?
Если у меня есть только одна функция, выполняющая sth, я просто
<div class="myClass" appResize></div>
Как справиться сдва?Я пробовал:
<div class="myClass" [appResize]="onResize" [appResize]="onInit"></div>
Моя идея
export class ResizeDirective implements OnInit {
constructor(
public renderer: Renderer2, public el: ElementRef,
) {
}
public element = document.getElementsByClassName('myElement');
ngOnInit() {
this.addColor();
}
@HostListener('window:resize')
onResize(){
this.addColor();
}
public addColor() {
if (window.innerWidth < 920)
this.renderer.addClass(this.el.nativeElement, 'resized');
this.renderer.addClass(element, 'alsoResized');
} else {
this.renderer.removeClass(this.el.nativeElement, 'resized');
this.renderer.removeClass(element, 'alsoResized');
}
}
Таким образом, я пишу одну функцию и просто вызываю ее, когда мне нужно - при загрузкеи когда экран изменен!В html мне просто нужно добавить полное имя директивы, например: <div class="myClass" appResize></div>
Довольно просто!