2017-02-22 40 views
0

我試圖訪問一個div在Angular2像下面的例外:獲得 'nativeElement.querySelector不是一個函數' 在Angular2

import { Component, ViewChild, ElementRef, AfterContentInit } from '@angular/core'; 

@Component({ 
    selector: 'main', 
    template: ` 
    <div #target class="parent"> 
     <div class="child"> 
     </div> 
    </div> 
    ` 
}) 

export class MainComponent implements AfterContentInit { 
    @ViewChild('target') elementRef: ElementRef; 

    ngAfterContentInit(): void { 
     var child = this.elementRef.nativeElement.querySelector('div'); 
     console.log(child); 
    } 
} 

,但我得到以下異常:

Exception: Call to Node module failed with error: TypeError: this.elementRef.nativeElement.querySelector is not a function

+0

也就是說怪'ElementRef.nativeElement'是類型'any'。你使用的角度是什麼版本,或者你的'package.json'是什麼樣的? –

+0

我使用的是角2.0.0。不應該使用這個版本? – mohsen

+0

它應該工作在這裏工作https://plnkr.co/edit/fRsQot7KtIAUGSIIZdKA –

回答

3

該模板使用angular2-universal進行服務器端呈現。 https://github.com/angular/universal#universal-gotchas

嘗試:

import { Component, AfterContentInit, ViewChild, ElementRef, Renderer } from '@angular/core'; 

@Component({ 
    selector: 'main', 
    template: ` 
    <div #target class="parent"> 
     <div class="child"> 
     </div> 
    </div> 
` 
}) 
export class MainComponent implements AfterContentInit { 
    @ViewChild('target') elementRef: ElementRef; 

    constructor(private renderer: Renderer) {} 

    ngAfterContentInit(): void { 
     var child = this.renderer.invokeElementMethod(this.elementRef.nativeElement, 'querySelector', ['div']); 
     console.log(child); 
    } 
} 
+1

現在已經棄用。有沒有人有更新的答案? –

相關問題