0

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 メソッドをトリガーせず、タップする方法が見つかりません。このようにリセットされるフォームに。

https://stackblitz.com/edit/angular-u2rlx9

4

2 に答える 2