Ich implementiere Login-Seite mit angular reaktiven Formen. Die Schaltfläche "Login" ist deaktiviert, wenn das Formular ungültig ist.Angular 2 und Browser AutoFill
import { Component, OnInit } from '@angular/core';
import { FormBuilder, FormGroup, Validators } from '@angular/forms';
@Component({
selector: 'signin',
templateUrl: './signin.component.html'
})
export class SignInComponent implements OnInit {
private signInForm: FormGroup;
constructor(private formBuilder: FormBuilder) { }
ngOnInit() {
this.buildForm();
}
private buildForm(): void {
this.signInForm = this.formBuilder.group({
userName: ['', [Validators.required, Validators.maxLength(50)]],
password: ['', [Validators.required, Validators.maxLength(50)]]
});
this.signInForm.valueChanges
.subscribe((data: any) => this.onValueChanged(data));
this.onValueChanged();
}
private onValueChanged(data?: any) {
console.log(data);
}
Also, wenn ich es in Browser zu starten, habe ich vorbelegt Felder „Username“ und „Passwörter“. Und in der Konsole habe ich die Werte "{userName:" [email protected] ", password:" "}" und als Ergebnis ist die Schaltfläche "login" deaktiviert. Aber wenn ich irgendwo auf der Seite klicke trigger onValueChanged und ich sehe '{userName: "[email protected]", Passwort: "123456"}', und die Schaltfläche "Login" ist aktiviert.
Wenn ich im Inkognito-Modus gehe. Ich habe keine vorher ausgefüllten Felder (sie sind leer), aber wenn ich Werte ausfülle (auswähle), dann sehe ich in der Konsole '{userName: "[email protected]", Passwort: "123456"}', und button " Login "ist ohne zusätzlichen Klick aktiviert.
Kann es sich um verschiedene Ereignisse handeln? Autofill und Autocomplete? Und angular arbeitet mit ihnen anders?
Was ist der beste Weg, um es zu lösen? Und warum onValueChanged Funktion wird nur einmal ausgeführt, wenn Browser AutoFill Felder?
Unglücklicherweise scheint die automatische Passwortvervollständigung nicht zu funktionieren. Versucht alle 3 möglichen Werte: 'autocomplete =" none | false | no "' – Denish