mit kantigem (4.x) Ich verwende ReactiveForms und ich habe zu valueChanges auf meinem Formcontrol abonniert ("Input") wie folgt:ValueChanges auf Formcontrol auslöst, wenn Form.enable, auch mit emitEvent: false
export class App {
version:string;
formControl = new FormControl('default', []);
form = this.fb.group({
input: this.formControl,
input2: ('',[])
});
constructor(private fb: FormBuilder) {
this.version = `Angular v${VERSION.full}`
}
ngOnInit() {
this.formControl.valueChanges.subscribe(value => doSomething(value));
}
So jetzt kann ich auf Änderungen auf den Wert meiner FormControl reagieren, aber natürlich fülle ich die Werte des Formulars von irgendwo zu beginnen, also verwende ich form.patchValue(data)
, um dies zu tun.
Da dies keine Benutzeränderung ist, möchte ich nicht darauf reagieren, also fügen Sie das Flag emitEvent: false
hinzu, wie: this.form.patchValue(data, {emitEvent: false})
.
Das funktioniert wie erwartet.
Jetzt habe ich eine gewisse Logik, dass, wenn das Formular Laden ist, habe ich die ganze Form Behinderte, this.form.disable({ emitEvent: false })
, und wenn Sie fertig Laden setzt er die ganze Form wieder aktiviert: this.form.disable({ emitEvent: false })
Aber ich habe auch eine Logik, die abhängig von verschiedenen Flaggen setzt die Formcontrol zu aktivieren/deaktivieren: this.formControl.enable({emitEvent: false});
das Problem, das ich jetzt bin sehen, dass, wenn die Form
, Statuswechsel, die löst FormControl.valueChanges
, obwohl ich die emitEvent: false
Flagge zur Verfügung stellen.
Ist dies das erwartete Verhalten oder ein Fehler? Ich erwartete, dass überhaupt kein Ereignis ausgelöst wird, wenn die Flagge zur Verfügung gestellt wird?
Ich habe ein zupfen gemacht, wo dies hier getestet werden kann: https://plnkr.co/edit/RgyDItYtEfzlLVB6P5f3?p=preview
Es scheint, dass dies in der Tat ein Problem: https://github.com/angular/angular/issues/12366 – Bulan
nach der gleichen Quelle, Fixes wurden geschoben und Github Problem ist geschlossen. – Pac0