Tôi đang cố gắng thêm lớp sẽ thay đổi giao diện của nó (ví dụ: burger thành x), thành phần DOM trình kích hoạt trình đơn có phương pháp riêng để hiển thị trình đơn lớp phủ, nhưng tôi không thể tìm ra cách để làm điều đó.Góc 2 - Thêm lớp vào phần tử DOM khi nhấp vào
Dưới đây là những gì tôi có cho đến nay - điều này được gọi một phương thức bên ngoài cho menu chính nó:
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');
}
}
Tôi mới vào góc 2. Làm thế nào là phải rèn luyện? Tôi có nên sử dụng số Renderer
hay không, tại sao tôi nên sử dụng số Renderer
? Và câu hỏi, vv
EDIT: Vấn đề với sự kiện nhấn tuyệt đối (chọn con, chứ không phải công ty mẹ) là chúng ta phải sử dụng một reference tag ghép nối với các
@ViewChild
trang trí như vậy:
@ViewChild('navTrigger') navTrigger: ElementRef;
liên quan đến tham chiếu #navTrigger
trong mẫu HTML.
Do đó:
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 –