Estou trabalhando em formulários e tenho dois componentes: meu componente filho contém este objeto formGroup:
employeeForm : FormGroup;
this.employeeForm = new FormGroup({
firstName:new FormControl(),
lastNAme:new FormControl(),
email:new FormControl()
});
o componente filho contém apenas uma pequena parte do formulário e o componente pai contém o formulário global com o botão de envio.
meu problema é: desejo no componente pai quando clico no botão enviar, recebo o grupo de formulários de meu componente filho e envio-o para meu formulário global em meu componente pai.
Eu adiciono saída em meu componente filho:
@Output() onFormGroupChange: EventEmitter<FormGroup> = new EventEmitter<FormGroup>();
mas não sei como permitir que o botão enviar no Comp pai pegue o objeto FormGroup do meu componente filho e prossiga para enviar os dados ...
você tem alguma ideia de como fazer isso?
Desde já, obrigado.
Cumprimentos.
Faça algo assim no componente filho:
import { Component, OnInit, Output, EventEmitter } from '@angular/core';
import { FormBuilder, FormGroup, Validators, FormControl } from '@angular/forms';
@Component({
selector: 'app-child',
templateUrl: './child.component.html',
styleUrls: ['./child.component.css']
})
export class ChildComponent implements OnInit{
@Output() private onFormGroupChange = new EventEmitter<any>();
employeeForm = new FormGroup({
firstName:new FormControl(),
lastNAme:new FormControl(),
email:new FormControl()
});
public ngOnInit() {
this.onFormGroupChange.emit(this.employeeForm);
}
}
E o componente pai: this.formCheck é o formGroup real que podemos usar em html.
import { Component, OnInit } from '@angular/core';
import { FormBuilder, FormGroup, Validators, FormControl } from '@angular/forms';
@Component({
selector: 'app-parent',
templateUrl: './parent.component.html',
styleUrls: ['./parent.component.css']
})
export class ParentComponent {
formCheck :any = ''
public onFormGroupChangeEvent(_event) {
this.formCheck = _event;
console.error(_event, this.formCheck['controls'])
}
}
Este artigo é coletado da Internet.
Se houver alguma infração, entre em [email protected] Delete.
deixe-me dizer algumas palavras