validering - Angular2/material 2: md-input-container etikett nullstiller ikke flyt når verdien endres programmessig
Jeg har et problem med å bruke @angular/materials md-input-containers og modul for reaktive skjemaer.
Jeg lager et påloggingsskjema med tre md-inputs som alle er koblet til verdier ved hjelp av FormBuilder's FormGroup. Alt der fungerer bra.
Mitt problem er at i ngSubmit-funksjonen blir skjemaet tilbakestilt hvis opplysningene som er lagt inn er ugyldige. Å bruke .reset()-metoden til FormGroup vil tilbakestille verdiene til standard, men de flytende etikettene i md-input-containers tilbakestilles ikke til sin opprinnelige plass, slik de burde på et tomt felt. Jeg antar at Material Design-direktivene ser etter et blur-event for å oppdatere dette, men jeg kan ikke si, og jeg vet ikke hvordan jeg kan tvinge det til å skje.
Her er ngSubmit-funksjonen:
submitForm(username: string, password: string, companyID: any):void {
this.userService.login(username, password, companyId)
.then(() => {
this.router.navigate(['main']);
})
.catch(() => {
this.loginForm.reset();
})
}
og når this.loginForm.reset() blir kalt, vil skjemaene tilbakestilles til standard (tomme strenger), men etikettene vil fortsatt flyte:
Etiketter flyter fortsatt. Jeg tilbakestilte selskaps-ID for referanse.
Noen idé om hvordan man kan fikse dette? Jeg vil egentlig ikke bruke en ElementRef, selv om jeg allerede har prøvd å gjøre det for å tvinge en blur, og det løste det ikke.
Svar #1
Prøv å bruke md-input-kontroll i stedet for input pakket inn i md-input-container. Det fungerte for meg.