問題タブ [angular2-form-validation]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
angular - Angular ValidatorFn は戻りますが、フォームをブロックしません
期待される ValidationErrors オブジェクトを返す、フォーム用のカスタム バリデーターを作成しました。
これを console.log 行で証明しました。これは実際にオブジェクトをログに記録します。
Validator は Validators.required のほかに添付されますngOnInit
問題は: 必要な Validator は意図したとおりに動作しますが、私のカスタム Validator はログに記録するだけです。
validators
の代わりに with arrayを使用したりValidators.compose
、 Validator メソッドを微調整してcontrol.setErrors(ret)
他のものを設定したりするなど、かなり多くのことを試しましたが、何も機能しませんでした。
かなり簡単な解決策があるように感じますが、見つけることができません...
編集 1: 私はスタックブリッツを作成しましたhttps://stackblitz.com/edit/angular-ysyb9i?file=src%2Fapp%2Fapp.component.html
説明: 入力は任意の文字列を受け取ります。選択を解除すると、検証が開始されます。入力が「false」の場合、 を返すことによって入力を無効に設定するconst ret: ValidationErrors = { isValidDirectory: true };
必要があり、その他の文字列は有効である必要があり、 を返しますnull
。
どちらの結果もコンソールに記録されるので、確認できます。入力が無効な場合は、下に通知 div が表示されます (よくわかりません。このスタックブリッツを表示するために追加しただけです)。
angular - 非同期検証と Ngrx ストアを使用したリアクティブなフォーム検証
Angular 8 アプリケーションを開発しています。NgRx ストアを使用してフォーム エラーを表示し、カスタム非同期バリデーターを使用してリアクティブ フォームを表示したいと考えています。
login.component.ts
login-page.effects.ts
ここでの主な問題は、私のtest
メソッド内にあります。エラーフィールドに を設定したいのです{ foo : true}
が、決して起こりません。私はグーグルでたくさん検索しましたが、私が見つけた1つの解決策は、オブザーバブルが完了first()
するようにメソッドを内部に追加することでした。pipe()
それは機能しましたが、最初だけでした。さらに、フォームが送信されたときに非同期バリデーターが呼び出されることはありませんでした。
インターネットで見つけたすべての例は、Http 呼び出しを使用していました。リクエストが完了するとオブザーバブルが完了することを理解していますが、私の場合、そのHttp呼び出しは私の内部で処理されていますlogin-page.effects.ts
それを行うより良い方法はありますか?または、よく知らない RxJs オペレーターが必要ですか?