typescript - Cómo pasar datos de un componente padre a un componente hijo en Angular 4
Cuando intento pasar datos del componente padre al hijo, estoy recibiendo un mensaje de indefinido en la consola. Los datos están en forma de arreglo.
padre.componente.html
<div class="section welcome-section fp-section fp-table" *ngFor="let section of sections">
<div class="fp-tableCell">
<app-question-card [data]="section"></app-question-card>
</div>
</div>
child.component.ts
@Input() data;
question = [];
constructor() {
this.question = this.data;
}
ngOnInit() {
console.log(this.question); //returns undefined
}
Respuesta #1
No puedes hacer la asignación en el constructor ya que el valor aún no ha sido poblado, debería hacerse en ngOnInit, igual que tu verificación del valor.
@Input() data;
question = [];
constructor() {
}
ngOnInit() {
this.question = this.data;
console.log(this.question);
}
Respuesta #2
Se puede hacer usando el decorador Input(). Vea el código a continuación -
parent.component.ts -
import { Component } from '@angular/core';
@Component({
selector: 'app-parent',
template: `
<app-child [childMessage]="parentMessage"></app-child>
`,
styleUrls: ['./parent.component.css']
})
export class ParentComponent{
parentMessage = "message from parent"
constructor() { }
}
child.component.ts -
import { Component, Input } from '@angular/core';
@Component({
selector: 'app-child',
template: `
Say {{ childMessage}}
`,
styleUrls: ['./child.component.css']
})
export class ChildComponent {
@Input() childMessage: string;
constructor() { }
}
Más información
