2017-12-15 4 views
1

Ich muss die DOM-Referenz der untergeordneten Komponente von eckigen 4, aber ich kann nicht auf Child-Komponente DOM zugreifen, bitte mich, wie dies zu erreichen.So erhalten Sie die untergeordnete DOM-Element Referenz von Parent mit eckigen 4

parent.component.html

<child-component></child-component> 

parent.component.ts

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

@Component({ 
    selector: 'parent-component', 
    templateUrl: './parent.component.html' 
}) 
export class ParentComponent implements AfterViewInit { 
    @ViewChild('tableBody') tableBody: ElementRef; 
    constructor(){ 
    console.log(this.tableBody);//undefined 
    } 
    ngAfterViewInit() { 
     console.log(this.tableBody);//undefined 
    } 
} 

child.component.ts

import { Component } from '@angular/core'; 
@Component({ 
    selector: 'child-component', 
    templateUrl: './child.component.html' 
}) 
export class ChildComponent { 
} 

child.component.html

<div> 
     <table border="1"> 
     <th>Name</th> 
     <th>Age</th> 
     <tbody #tableBody> 
     <tr> 
     <td>ABCD</td> 
      <td>12</td> 
     </tr>   
     </tbody> 
     </table> 
</div> 

Antwort

1

auf Antwort Sachila Ranawaka zu erweitern:

Zuerst müssen Sie <child-component #childComp></child-component>

In Ihrer Stammkomponente, statt ElementRef sollte es sein ChildComponent:

@Component({ 
    selector: 'parent-component', 
    templateUrl: './parent.component.html' 
}) 
export class ParentComponent implements AfterViewInit { 
    @ViewChild('childComp') childComp: ChildComponent; 
    constructor(){ 
    } 
    ngAfterViewInit() { 
    console.log(this.childComp.tableBody); 
    } 
} 

Für Ihre Kindkomponente:

+0

danke, es funktioniert gut. – thilagabala

0

Sie müssen die tableBody von der übergeordneten Komponente referenzieren. So fügen Sie es ihm child-component und entfernt sie aus tbody

<child-component #tableBody></child-component> 
+0

Dies gibt Zugriff auf untergeordnete Komponente nicht Tabelle Körper, der Teil der Kindkomponente ist –

+0

@thilagabala Diese Antwort ist nicht falsch nur unvollständig. – 12seconds

+0

@ 12 Sekunden, korrigieren Sie mich, wenn ich falsch liege, wenn ich den obigen Code tun könnte, kann ich Kind-Komponenten-Methoden und Bindungswerte anstelle von DOM bekommen. – thilagabala

Verwandte Themen