Estou estudando angular e no momento preciso adicionar a data de nascimento de uma pessoa. Porém estou recebendo invalid date e com isso meu back end recebe a informação como null.
Aqui esta a minha interface:
export interface Pessoa {
id: number;
nome: String;
nomeSocial: String;
dataNascimento: Date;
cpf: String;
rg: String,
email: String;
telefone: String;
whats: boolean;
endereco: Endereco;
}
o meu component esta da seguinte forma:
export class FormPessoaComponent implements OnInit {
@ViewChild('dataInput') dataInput: ElementRef;
formulario: FormGroup;
value: string | undefined;
estados: Estados[] = [];
pessoa: Pessoa;
constructor(private service: PessoaService,
private estadoService: EstadosService,
private fb: FormBuilder,
private router: Router,
private messageService: MessageService) {
this.formulario = this.fb.group({
nome: ['', [Validators.required]],
nomeSocial: [''],
dataNascimento: ['', [Validators.required]],
rg: ['', [Validators.required]],
cpf: ['', [Validators.required]],
logradouro: ['', [Validators.required]],
bairro: ['', [Validators.required]],
numero: ['', [Validators.required]],
cidade:['', [Validators.required]],
estado: ['', [Validators.required]],
cep: ['', [Validators.required]],
telefone: ['', [Validators.required]],
email: [''],
whats: false
});
}
ngOnInit(): void {
this.listaEstados();
}
listaEstados() {
this.estadoService.listarEstado().subscribe((estados: Estados[]) => {
this.estados = estados;
});
}
salvar() {
if (this.formulario.valid) {
this.removerMascaras();
const dadosFormulario = this.formulario.value;
this.pessoa = {
id: null,
nome: dadosFormulario.nome,
nomeSocial: dadosFormulario.nomeSocial,
dataNascimento: new Date(dadosFormulario.dataNascimento),
cpf: dadosFormulario.cpf,
rg: dadosFormulario.rg,
email: dadosFormulario.email,
telefone: dadosFormulario.telefone,
whats: dadosFormulario.whats,
endereco: {
logradouro: dadosFormulario.logradouro,
bairro: dadosFormulario.bairro,
numero: dadosFormulario.numero,
cidade: dadosFormulario.cidade,
cep: dadosFormulario.cep,
uf: dadosFormulario.estado.nome,
complemento: '',
},
};
console.log(this.pessoa);
this.service.salvarPessoa(this.pessoa).subscribe((resposta) => {
if (resposta) {
this.showSucesso();
} else {
this.showError();
}
});
}
}
private removerMascaras() {
const camposComMascara = ['cpf', 'cep'];
camposComMascara.forEach(campo => {
const valorCampo = this.formulario.get(campo).value;
if (valorCampo) {
this.formulario.get(campo).setValue(valorCampo.replace(/\D/g, ''));
}
});
}
e por fim o html que contém a parte do formulário de data:
<div class="field">
<label htmlFor="dataNascimento">Data de Nascimento</label>
<p-inputMask
formControlName="dataNascimento"
mask="99/99/9999"
placeholder="99/99/9999"
formControlName="dataNascimento">
</p-inputMask>
<div *ngIf="formulario.get('dataNascimento').touched && formulario.get('dataNascimento').hasError('required')">
A data de nascimento é obrigatória.
</div>
</div>
</div>
</div>
alguém poderia me socorrer em como eu consigo salvar esta data no formato date? A titulo de informação estou usando prime ng.