我試圖添加一個類,它將改變它的外觀(,例如漢堡到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 –