2016-05-20 11 views
1

Ich versuche, ein ElementRef für eine untergeordnete Komponente von seiner übergeordneten Komponente zu erhalten.Angular2: Get Elementref auf Kindkomponente von Eltern

@Component({ 
moduleId: module.id, 
selector: 'parent', 
templateUrl: 'parent.component.html', 
directives: [ 
    Child1Component, 
    Child2Component 
    ] 
}) 

Im html für Child1Component Ich habe

<button class="btn btn-primary" #myRef>Select File</button> 

In der Klasse für die Eltern:

export class ParentComponent implements OnInit { 
    @ViewChild('myRef') myRef: ElementRef; 
    // ... 

Aber natürlich, wenn ich versuche, das Kind ElementRef in der übergeordneten Klasse zugreifen ...

ngAfterViewInit() { 
    console.log(this.myRef.nativeElement); 

... Ich bekomme undefined. Wie soll ich das ElementRef bekommen? Vielen Dank!

+2

Ich bin mir nicht bewusst irgendeine Weise für eine übergeordnete Komponente in der Lage seine ein lokales Template-Variable in einer untergeordneten Komponente Vorlage definiert zu verweisen. Überlegen Sie sich, dass der Elternteil mithilfe von @ViewChild einen Verweis auf die untergeordnete Komponente erhält. Anschließend können Sie eine Methode für die untergeordnete Komponente aufrufen, um das Element von Interesse zu bearbeiten. –

Antwort

0

versuchen ContentChild anstelle von ViewChild

import { Component, ContentChild, ElementRef, OnInit } from '@angular/core'; 
... 

export class ParentComponent implements OnInit { 
    @ContentChild('myRef') myRef: ElementRef; 
    // ... 

    ngAfterViewInit() { 
    console.log(this.myRef.nativeElement); 
    } 

} 
Verwandte Themen