私は検証のために使用するフォームの登録解除値の変更に関する問題があります。正確なケースで私が消したい私の方法:Angular2 unsubscribe valueChanges on formGroup
this.taskForm.valueChanges.subscribe(data => {
...
this.output = data;
});
私は提出後このリスナーを削除したいと思います。これどうやってするの?私はunsubscribe
を使用しようとしましたが、それは役に立ちません。以下は私の試みです:
this.sub = this.taskCreate.valueChanges.subscribe(data => {
...
this.output = data;
});
と私はthis.sub.unsubscribe();
を追加しようとしましたが、それは助けにはなりませんでした。 formValidator
内部valueChanges
への登録
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;
});
}
問題は別の場所にある必要があります。 'unsubscribe()'はこのように動作します。あなたが提起したコードの周りにもっと文脈を提供してください。このコードはどこでどのように呼び出されていますか? –
こんにちはガンター!私は説明にもっと詳しい情報を追加しました。ユーザーが無効なフォームを送信する場合は、Validatorを呼び出します。このValidatorは、すべてのフォームフィールドを調べて変更を検出するvalueChangesサブスクライバを実行し、フィールドが無効である場合は、検証情報を持つラベルを表示します。 最初に実行しても問題ありませんが、次のフォームを送信するときには難しいことです。この場合、フォームが開かれているので、ユーザーが無効なフォームを送信したいときではなく、valueChangesが機能します。 –
そのコードのどこにもあなたはどちらかを表示していません:1.あなたは '退会しようとしました。または2.正確に何を意味するのか*は「助けにはならない」*。 – jonrsharpe