代码之家  ›  专栏  ›  技术社区  ›  Jinseong Kim

在angular2中使用setElementClass时,“classList”未定义

  •  2
  • Jinseong Kim  · 技术社区  · 9 年前

    constructor(private loginService: LoginService, 
                private router: Router, 
                private renderer: Renderer) { }
    
    @ViewChild('element') private element: ElementRef;
    this.renderer.setElementClass(this.element, 'shake', false);
    

    它导致未定义的“无法读取属性”classList

    this.renderer.setElementClass(this.element.nativeElement, 'shake', false);
    

    它导致“无法读取未定义”的属性“nativeElement”

    2 回复  |  直到 9 年前
        1
  •  2
  •   FAISAL    9 年前

    组件.html

    <div #myDiv></div>
    

    @ViewChild('myDiv') private myDiv: ElementRef;
    
    ngAfterViewInit () {
        this.renderer.setElementClass(this.myDiv.nativeElement, 'shake', true); } }
    }
    

    这是一个工作过程: DEMO

        2
  •  0
  •   Jason Spradlin    9 年前

    我在您得到的结果中看到的问题是,该组件没有找到ElementRef子组件(即 @ViewChild ElementRef @ViewChild 室内装修设计师

    private element: ElementRef 到构造函数中的参数列表。这对我来说一直很有效。

    import { Component, AfterViewInit } from '@angular/core';
    
    @Component(...)
    export class MyComponent implements AfterViewInit {
    
        constructor(
            private loginService: LoginService, 
            private router: Router, 
            private renderer: Renderer,
            private elementRef: ElementRef
        ) { }
    
        ngAfterViewInit() {
            this.renderer.addClass(this.elementRef.nativeElement, 'shake');
        }
    }
    

    此示例将要求您更新类签名以实现 AfterViewInit @angular/core