Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Expression has changed after it was checked.

Bom dia senhores, ao realizar um *ngFor para uma listagem de inputs estou tendo o seguinte erro:

Expression has changed after it was checked. Previous value: 'Claro'. Current value: 'Fixo'.

o HTML referente é:

<div *ngFor="let phone of new_data.phones" fxLayout="row" fxLayoutAlign="start center">
    <md-input-container>
        <input  mdInput 
                placeholder="Etiqueta"
                formControlName="phoneLabel"  
                [(ngModel)]="phone.label">
    </md-input-container>
    <md-input-container>
        <input  mdInput 
                placeholder="Número"
                formControlName="phoneNumber"  
                [(ngModel)]="phone.number">
        </md-input-container>
</div>

o conteúdo do new_data.phones é:

phones: Array[2]
0:
    Object 
        label: "Claro"
        number: "12345678"
    __proto__: Object
1:
    Object
        label: "Fixo" 
        number: "98765432"
    __proto__: Object
length: 2

que é recebido dentro do constructor.

Na view, ele substitui o objeto 0 pelo 1 e em seguida trava a interface.

Sei que este erro de exceção só acontece no DEV mode, mas não devo ignorá-lo. Até porque ele trava toda a interface.

Como seria possível resolver isso?

2 respostas
solução!

Pois é, olhei lá na documentação deles e ainda existe isso. É uma mensagem exibida apenas em tempo de desenvolvimento e que sumirá em produção. Não vi previsão deles resolverem isso lá não.

Algumas tentaram gambiarras como você pode ver nessa thread.

https://github.com/angular/angular/issues/6005

Como Angular 2 é muito novo, os devs não estão se arriscando muito em utilizá-lo e sua adoção esta sendo muito abaixo do que a equipe do Angular esperava. Preocupante. Ainda mais com problemas como esse que acontecem e que perduram.

Triste saber disso, desestimular usar o angular 2. Mas gostei mais dele do que do Angular 1