- ViewChild allows a one component to be injected into another.
- This means we need to implement the AfterViewInit lifecycle hook to receive the data from the child.
- ngAfterViewInit() is called after a component’s view, and its children’s views, are created. Its a lifecycle hook that is called after a component’s view has been fully initialized.
Step1: Create two components
ng g c myparent1 and ng g c mychild1
myparent1 Component
<p>
myparent1 works!
</p>
<p>{{ message }}</p>
<app-mychild1></app-mychild1>
import { Component, OnInit , ViewChild ,AfterViewInit } from '@angular/core';
import { Mychild1Component } from '../mychild1/mychild1.component';
@Component({
selector: 'app-myparent1',
templateUrl: './myparent1.component.html',
styleUrls: ['./myparent1.component.css']
})
export class Myparent1Component implements OnInit , AfterViewInit {
@ViewChild(Mychild1Component) childdata;
message: string;
constructor() { }
ngOnInit() {
}
ngAfterViewInit()
{
this.message = this.childdata.childvar;
}
}
mychild1component
import { Component, OnInit } from '@angular/core';
@Component({
selector: 'app-mychild1',
templateUrl: './mychild1.component.html',
styleUrls: ['./mychild1.component.css']
})
export class Mychild1Component implements OnInit {
childvar: string ="This is child var data";
constructor() { }
ngOnInit() {
}
}
Output
