O primeior elemento com formControlName declarado no meu HTML não exibe seu valor. Porém ja dei get atraves do FormBuilder e o seu valor vem normalmente. Porém não é exibido no input, nem leva a alteração que for escrita. A partir do segundo elemento funciona normalmente.
<form [formGroup]="clienteForm" (ngSubmit)="salvar()">
<input type="text" formControlName="nomeFantasia" placeholder="Nome Fantasia"><br>
<input type="text" formControlName="cnpj" placeholder="CNPJ"><br>
<input type="text" formControlName="telefone" placeholder="Telefone"><br>
<button type="submit">Salvar</button>
</form>
this.clienteForm = this.formBuilder.group({
nomeFantasia: ['nome teste'], //---> "nome teste" nunca é exibido
cnpj: ['cnpj teste'],
telefone: ['tel teste']
});
nomeFantasia: this.clienteForm.get('nomeFantasia').value //---> "nome teste" é retornado normalmente
cliente.module.ts:
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { RouterModule } from '@angular/router';
import { ReactiveFormsModule } from '@angular/forms';
import { CadastroClienteComponent } from './cadastro/cadastroCliente.component';
import { ListaClienteComponent } from './lista/listaCliente.component';
@NgModule({
declarations: [
CadastroClienteComponent,
ListaClienteComponent
],
imports: [
CommonModule,
RouterModule,
ReactiveFormsModule
]
})
export class ClienteModule { }
cadastroCliente.component.ts
import { Component, OnInit } from '@angular/core';
import { FormControl, FormGroup, FormBuilder } from '@angular/forms';
import { ConnectionFactory } from 'src/app/connection/connection.service';
import { ClienteDAO } from 'src/app/dao/clienteDao';
import { ActivatedRoute } from '@angular/router';
@Component({
templateUrl: 'cadastroCliente.component.html'
})
export class CadastroClienteComponent implements OnInit {
clienteForm: FormGroup;
clienteDAO;
clienteId;
constructor(
private formBuilder: FormBuilder,
private activatedRoute: ActivatedRoute
) { }
ngOnInit() {
this.clienteId = parseInt(this.activatedRoute.snapshot.params.clienteId);
ConnectionFactory.getConnection()
.then(connection => this.clienteDAO = new ClienteDAO(connection))
.then(this.carregaCliente.bind(this))
.then(this.carregaForm.bind(this));
}
carregaCliente() {
if (this.clienteId) {
return this.clienteDAO.select(this.clienteId);
} else {
return { nomeFantasia: '', cnpj: '', telefone: '' };
}
}
carregaForm(cliente) {
this.clienteForm = this.formBuilder.group({
nomeFantasia: [cliente.nomeFantasia],
cnpj: [cliente.cnpj],
telefone: [cliente.telefone]
});
}
salvar() {
let cliente = {
id: (this.clienteId ? this.clienteId : this.clienteDAO.AUTO_INCREMENT_KEY),
nomeFantasia: this.clienteForm.get('nomeFantasia').value,
cnpj: this.clienteForm.get('cnpj').value,
telefone: this.clienteForm.get('telefone').value
};
this.clienteDAO.save(cliente)
.then(cliente => {
if (!this.clienteId) {
this.clienteForm.reset();
}
alert(`Cliente ${cliente.id} - ${cliente.nomeFantasia} salvo`);
});
}
}
cadastroCliente.component.html
Cadastro de Clientes
<br>
<a [routerLink]="['/clientes']">Ver todos</a>
<br>
<br>
<form [formGroup]="clienteForm" (ngSubmit)="salvar()">
<input type="text" formControlName="nomeFantasia" placeholder="Nome Fantasia"><br>
<input type="text" formControlName="cnpj" placeholder="CNPJ"><br>
<input type="text" formControlName="telefone" placeholder="Telefone"><br>
<button type="submit">Salvar</button>
</form>