People, why am I having the error "ExpressionChangedAfterHasBeenCheckedError: Expression has changed after it was checked.
I'm using ionic 2, and here are my codes:
Edit-Sales.ts:
export class EditarVendaPage {
public produto: Produto;
cliente: Cliente;
clientes: any[] = [];
venda: Venda;
constructor(public navCtrl: NavController, public navParams: NavParams, private produtosProvider: ProdutosProvider, private toast: ToastController, private vendaProvider: VendasProvider, private clienteProvider: ClientesProvider) {
this.venda = new Venda();
if (this.navParams.get('produto')) {
this.produto = this.navParams.get('produto');
this.venda.produto_id = this.produto.id;
}
if (this.navParams.get('id')) {
this.vendaProvider.getToEdit(this.navParams.get('id'))
.then((result: any) => {
this.venda.id = result.id;
this.venda.pagamento = result.pagamento;
this.venda.cliente_id = result.cliente_id;
this.venda.produto_id = result.produto_id;
this.venda.quantidade = result.quantidade;
this.venda.preco_unidade = result.preco_unidade;
this.venda.total = result.total;
this.venda.data = result.data;
this.cliente = new Cliente();
this.cliente.id = this.venda.cliente_id;
this.cliente.nome = result.nomeCliente;
this.produto = new Produto();
this.produto.id = result.produto_id;
this.produto.nome = result.nomeProduto;
this.produto.preco_venda = result.preco_venda;
})
}
}
A view (edit-sales.html):
Register for sale: {{product.name}}
<ion-input type="hidden" [(ngModel)]="produto.id"></ion-input>
<ion-item>
<ion-label>Cliente</ion-label>
<ion-icon name="contact"></ion-icon>
<ion-select [(ngModel)]="venda.cliente_id">
<ion-option *ngFor="let cliente of clientes" [value]="cliente.id">{{cliente.nome}}</ion-option>
</ion-select>
</ion-item>
<ion-item>
<ion-label stacked>Nome do produto</ion-label>
<ion-input type="text" required [(ngModel)]="produto.nome" [value]="produto.nome" readonly></ion-input>
</ion-item>
<ion-item>
<ion-label stacked>Preço por unidade</ion-label>
<ion-input type="text" required placeholder="R$" [(ngModel)]="venda.preco_unidade" [value]="produto.preco_venda.toFixed(2)"><ion-icon name="ios-eye-outline" item-right></ion-icon></ion-input>
</ion-item>
<ion-item>
<ion-label stacked>Quantidade</ion-label>
<ion-input type="number" required [(ngModel)]="venda.quantidade" (ngModelChange)="calculaTotal()" (ngBlur)="calculaTotal()"></ion-input>
</ion-item>
<ion-item>
<ion-label stacked>Total</ion-label>
<ion-input type="number" readonly required [(ngModel)]="venda.total"></ion-input>
</ion-item>
<ion-item>
<ion-label stacked>Forma de pagamento</ion-label>
<ion-icon name="card"></ion-icon>
<ion-select [(ngModel)]="venda.pagamento">
<ion-option [value]="Dinheiro">Dinheiro</ion-option>
<ion-option [value]="Debito">Cartão de Débito</ion-option>
<ion-option [value]="Credito">Cartão de Crédito</ion-option>
<ion-option [value]="Cheque">Cheque</ion-option>
</ion-select>
</ion-item>
<ion-item>
<ion-label>Data</ion-label>
<ion-datetime displayFormat="DD/MM/YYYY" [(ngModel)]="venda.data"></ion-datetime>
</ion-item>
</ion-list>
<button ion-button block color="secondary" (click)="save()">Salvar</button>
I'm using a provider that returns an object, but I do not think this provider is relevant to this error.
I've read a bit about the error, but found nothing that fit into my problem.
I tried to get toFixed (2), but it does not resolve.
Does anyone have a solution or can you help me?