我试图添加一个类,它将改变它的外观(,例如汉堡到x),到一个菜单触发DOM元素,它有自己的方法来显示覆盖菜单,但我无法弄清楚如何做到这一点。Angular 2 - 在点击时向DOM元素添加一个类
这里是我迄今为止 - 这是呼吁菜单本身的外部方法:
import { Component, ElementRef, ViewChild, Renderer, AfterViewInit } from '@angular/core';
import { LayoutService } from 'app/core/services/layout.service';
@Component({
moduleId: module.id,
selector: 'header-main',
templateUrl: 'header-main.component.html',
})
export class HeaderMainComponent {
@ViewChild('nav-trigger') el: ElementRef;
constructor(private layoutService: LayoutService) { }
menuToggle() {
this.layoutService.mainMenuToggle();
this.el.nativeElement.classList.add('opened');
}
}
我是新来的角2.这是如何工作了呢?我应该使用Renderer
,为什么我应该使用Renderer
?等问题
编辑:用绝对click事件(选择子,不是父)的问题是,我们必须使用一个reference tag与
@ViewChild
装饰为使配对:
@ViewChild('navTrigger') navTrigger: ElementRef;
它涉及HTML模板中的#navTrigger
引用。
因此:
export class HeaderMainComponent {
logoAlt = 'We Craft beautiful websites'; // Logo alt and title texts
@ViewChild('navTrigger') navTrigger: ElementRef;
constructor(private layoutService: LayoutService, private renderer: Renderer) { }
menuToggle(event: any) {
this.layoutService.mainMenuToggle();
this.renderer.setElementClass(this.navTrigger.nativeElement, 'opened', true);
}
}
https://angular.io/docs/ts/latest/guide/template -syntax.html#!#ngClass –