2016-05-20 5 views
1

Я пытаюсь получить ElementRef для дочернего компонента из его родительского компонента.Angular2: get elementref на дочернем компоненте от родителя

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

В HTML для Child1Component У меня есть

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

В классе для родителей:

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

Но, конечно, когда я пытаюсь получить доступ к ребенку ElementRef в родительском классе ...

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

... Я получаю undefined. Как мне получить ElementRef? Благодаря!

+2

Я не знаю ни одного способа для родительского компонента, чтобы иметь возможность ссылаться на локальный переменном шаблон, определенных в шаблоне компоненты ребенка. Попросите родителя получить ссылку на дочерний компонент с помощью @ViewChild, тогда вы можете вызвать метод на дочернем компоненте, чтобы манипулировать интересующим элементом. –

ответ

0

попробуйте использовать ContentChild вместо ViewChild

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

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

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

}