Könnte jemand bitte erklären, was hinter folgendem Verhalten ist:Angular2, * ngIf und lokale Template-Variablen
Sagen wir eine Angular2 Komponente haben, die ein _model Objekt hat. Dann in der Vorlage haben wir diese
<form>
<input type="text" class="form-control" required [(ngModel)]="_model.firstName" ngControl="test2" #myInput >
<br>Class: {{myInput?.className}}
</form>
Die _model verfügbar ist von Anfang an von Grund auf in ngOnInit geschaffen. Das Eingabefeld wird mit dem _model.firstName Variable und der Leitung richtig bestückt
<br>Class: {{myInput?.className}}
korrekt die folgend in der Vorlage
Class: form-control ng-untouched ng-pristine ng-invalid
rendert.
So weit so gut. Was ich verwirrt ist, dass der Moment, als ich eine * ngIf und ich das Eingabefeld
<input *ngIf="_model" type="text" class="form-control" required [(ngModel)]="_model.firstName" ngControl="test2" #myInput >
Die doppelte geschweifte Klammer Interpolation nicht mehr funktioniert, weil offenbar das lokale myInput
Variable nicht initialisiert wird erhalten, selbst wenn nichts anderes im Code zu ändern
onNgInit()
erstellt und das Eingabefeld funktioniert noch ordnungsgemäß. Das einzige, was die
{{myInput?.className}}
macht, ist
Class:
Kann jemand erklären, was los ist und/oder mich für diese auf die richtige Stück Dokumentation zeigen?
Vielen Dank im Voraus!
Edit:
Hier ist ein Plunker, die das Problem in Frage zeigt
http://plnkr.co/edit/itNRpy5lc9PB837C7HdP?p=preview
Erstellt Bugreport https://github.com/angular/angular/issues/8087
ist Ihr _Modell ein boolean? –
Können Sie einen Plünderer machen? –
Ich habe es gerade in meiner Anwendung getestet, und ich kann Ihr Problem reproduzieren. Irgendwie wird '# myInput' nach dem Hinzufügen von' * ngIf' 'undefiniert'. Das fühlt sich an wie ein angular2 Bug, oder jemand muss sich eine gute Erklärung einfallen lassen. – PierreDuc