Qualcuno potrebbe spiegare cosa c'è dietro il seguente comportamento:Angular2, * ngIf e dei modelli locale variabili
Dire che abbiamo un componente Angular2 che ha un oggetto _model. Poi nel modello abbiamo questa
<form>
<input type="text" class="form-control" required [(ngModel)]="_model.firstName" ngControl="test2" #myInput >
<br>Class: {{myInput?.className}}
</form>
Il _model è disponibile a partire dall'inizio di essere creato da zero in ngOnInit. Il campo di immissione è correttamente popolato con la variabile _model.firstName e la linea
<br>Class: {{myInput?.className}}
rende correttamente il seguente nel modello
Class: form-control ng-untouched ng-pristine ng-invalid
.
Fin qui tutto bene. Ciò che mi confonde è che il momento aggiungo * ngIf e modificare il campo di input per
<input *ngIf="_model" type="text" class="form-control" required [(ngModel)]="_model.firstName" ngControl="test2" #myInput >
La doppia parentesi graffe interpolazione smette di funzionare perché a quanto pare la variabile locale myInput
non viene inizializzato anche quando nient'altro nel codice modifiche, l'oggetto _model viene ancora creato in onNgInit()
e il campo di input funziona ancora correttamente. L'unica cosa che la rende {{myInput?.className}}
è
Class:
Qualcuno può spiegare cosa sta succedendo e/o indicarlo al corretto pezzo di documentazione per questo?
Grazie in anticipo!
Edit:
Ecco un plunker che mostra il problema in questione
http://plnkr.co/edit/itNRpy5lc9PB837C7HdP?p=preview
bug report Creato https://github.com/angular/angular/issues/8087
è il tuo modello a booleano? –
Puoi fare un plunker? –
Appena testato nella mia applicazione, e posso riprodurre il problema. In qualche modo '# myInput' diventa' indefinito' dopo aver aggiunto '* ngIf'. Questo sembra un bug angolare2, o qualcuno deve trovare una buona spiegazione. – PierreDuc