Ich habe Probleme mit Änderungen der Abmeldewerte im Formular, die ich für die Live-Validierung verwende. Meine Methode, die ich im exakten Fall ausschalten möchte:Angular2 unsubscribe valueÄnderungen in formGroup
this.taskForm.valueChanges.subscribe(data => {
...
this.output = data;
});
Ich möchte diesen Listener nach dem Senden entfernen. Wie kann ich das machen? Ich habe versucht, unsubscribe
zu verwenden, aber es hilft nicht. Unten ist mein Versuch:
this.sub = this.taskCreate.valueChanges.subscribe(data => {
...
this.output = data;
});
und ich versuchte this.sub.unsubscribe();
hinzuzufügen, aber es half nicht.
onSubmit(form: FormGroup) {
let context: number = 0;
if(form.valid) {
this.appService.addTask(form.value)
.then(result => {
this.lgModal.hide();
this.taskCreate.reset({ priority: '' });
this.cartBox.cart = [];
this.cartBox.showCart = false;
this.createTaskDone.emit();
this.attachments.attachmentList = [];
this.uploader.clearQueue();
this.reloadContent.emit(context);
this.counter += 1;
console.log("COUNTER: ", this.counter);
})}
else {
this.formValidator(form);
}
}
formValidator(form:FormGroup) {
if(!form.controls['goal'].valid) this.formValid.goalErr = 1; else this.formValid.goalErr = 0;
if(!form.controls['priority'].valid) this.formValid.priorityErr = 1; else this.formValid.priorityErr = 0;
if(!form.controls['note'].valid) this.formValid.noteErr = 1; else this.formValid.noteErr = 0;
this.taskCreate.valueChanges.subscribe(data => {
this.formValidator(form);
this.output = data;
});
}
Das Problem muss woanders sein. 'unsubscribe()' funktioniert so. Können Sie bitte mehr Kontext für den von Ihnen gestellten Code bereitstellen? Wo und wie heißt dieser Code? –
Hallo Gunter! Ich habe mehr Informationen in der Beschreibung hinzugefügt. Genau rufe ich Validator an, wenn Benutzer ungültiges Formular einreichen möchte. Dann führt dieser Validator valueChanges subscrient aus, der alle Formularfelder prüft und Änderungen erkennt. Wenn das Feld ungültig ist, wird die Beschriftung mit den Validierungsinformationen angezeigt. beim ersten Lauf funktioniert es ok, aber knifflige Sache ist, wenn ich das nächste Formular senden möchte. In diesem Fall funktioniert valueChanges seit dem Öffnen des Formulars, nicht wenn der Benutzer ein ungültiges Formular senden möchte. –
Nirgendwo in diesem Code zeigen Sie entweder: 1. wo Sie sich abmelden wollten; oder 2. was genau du meinst * hilft nicht *. – jonrsharpe