【发布时间】:2017-03-15 12:08:58
【问题描述】:
我正在尝试将一个会改变其外观的类(例如汉堡到 x)添加到一个菜单触发 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');
}
}
我是 Angular 2 的新手。这应该如何解决?我应该使用Renderer,为什么我应该使用Renderer?等等问题
编辑:绝对点击事件(选择孩子,而不是父母)的问题是我们必须使用 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);
}
}
【问题讨论】:
标签: angular