AngularJs では、フォームの検証に ng-submitted クラスを使用していましたが、フォームを送信しても Angular に表示されません。フォームに送信されたクラスを追加し、リセット時に削除するディレクティブを作成しました
@Directive({
selector: '[appForm]'
})
export class FormDirective implements OnDestroy {
private subscription: Subscription;
constructor(el: ElementRef, form: NgForm) {
this.subscription = form.ngSubmit.subscribe(() => {
el.nativeElement.classList.add('submitted');
});
form.onReset = () => {
el.nativeElement.classList.remove('submitted');
};
}
ngOnDestroy() {
if (this.subscription) {
this.subscription.unsubscribe();
}
}
}
これは、フォームをリセット ボタンでリセットするときにうまく機能します。私が抱えている問題は、すべてのバインディングを null に設定する以外の値でリセットする必要がある場合です。ngForm の resetForm メソッドを使用してフォームをリセットする必要がありますが、これは onReset メソッドをトリガーせず、タップする方法が見つかりません。このようにリセットされるフォームに。