Ionic 2 - Expression has changed after it was checked

0

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?

    
asked by anonymous 31.01.2018 / 17:27

0 answers