попробуйте использовать Renderer2
для управления элементами dom вместе с ElementRef
и ViewChild
, как уже упоминалось ранее.
первый импорт ViewChild, ElementRef
и Renderer2
import { Renderer2, ElementRef, ViewChild } from '@angular/core';
получите Элемент, используя ViewChild
типа ElementRef
после того, как вы сделаете ссылки на шаблоны в вашей DOM, например,
<div #hamburgerBig></div>
<div #hamburgerSmall></div>
<div #menu></div>
@ViewChild('hamburgerBig') hamburgerBig: ElementRef;
@ViewChild('hamburgerSmall') hamburgerSmall: ElementRef;
@ViewChild('menu') menu: ElementRef;
, и делайте ваши вещи с помощью функции hamburgerClick
hamburgerClick() {
const hamBigIsActive = this.hamburgerBig.nativeElement.classList.contains('is-active');
const hamSmallIsActive = this.hamburgerSmall.nativeElement.classList.contains('is-active');
const menuShow = this.menu.nativeElement.classList.contains('show');
if(hamBigIsActive) {
this.renderer.removeClass(this.hamburgerBig.nativeElement, 'is-active');
} else {
this.renderer.addClass(this.hamburgerBig.nativeElement, 'is-active');
}
if(hamSmallIsActive) {
this.renderer.removeClass(this.hamburgerSmall.nativeElement, 'is-active');
} else {
this.renderer.addClass(this.hamburgerSmall.nativeElement, 'is-active');
}
if(hamSmallIsActive) {
this.renderer.removeClass(this.menu.nativeElement, 'show');
} else {
this.renderer.addClass(this.menu.nativeElement, 'show');
}
}
или вы можете просто использовать [ngClass]
(не уверен, почему вы не используете это вместо этого), надеюсь, это поможет
, также не забудьте добавить рендер в ваш конструктор
contructor(private renderer: Renderer2){}
Редактировать:вот реализация [ngClass]
<div id="small"
(click)="hamburgerClick()"
[ngClass] = "{'is-active' : hamClick}"
class="hamburger hamburger--
slider hamburger-small">
<div class="hamburger-box">
<div class="hamburger-inner"></div>
</div>
</div>
<div id="big"
(click)="hamburgerClick()"
[ngClass] = "{'is-active' : hamClick}"
class="hamburger hamburger--slider
hamburger-big">
<div class="hamburger-box">
<div class="hamburger-inner"></div>
</div>
</div>
<div
[ngClass] = "{'show' : hamClick}"
class="menu">
<p (click)="closeChatbar(false); hamburgerClick();" [routerLink]="
['/app/main/home']">Home</p>
</div>
, а затем просто используйте функцию для переключения
hamClick: boolean
hamburgerClick(){
this.hamClick = !this.hamClick;
}
и вот вам