フォームに検証を作成しようとしています。discount
フィールドは空ではなく、値の範囲は0〜100である必要があります。time_from
とtime_to
は空にできません。 time_from
とtime_to
で検証プロセスを開始できません。私はPrimeNGカレンダーコンポーネントを使用します。私はp-calendar
のバリデーションがngModule
でうまく動作することを知りましたが、フォームグループの解決策は見つかりませんでした。Primengカレンダーフォームグループの検証の問題
コンポーネント(簡体字)(簡体字)
ngOnInit() {
this.buildForm();
}
buildForm(): void {
this.discountFG = this.fb.group({
discount: new FormControl('', [Validators.required, CustomValidators.range([0, 100])]),
time_from: new FormControl('', Validators.required),
time_to: new FormControl('', Validators.required)
});
this.discountFG.valueChanges
.subscribe(data => this.onValueChanged(data));
}
onValueChanged(data?: any) {
if (!this.discountFG) { return; }
const form = this.discountFG;
for (const field in this.formErrors) {
// clear previous error message (if any)
this.formErrors[field] = '';
const control = form.get(field);
if (control && control.dirty && !control.valid) {
const messages = this.validationMessages[field];
for (const key in control.errors) {
this.formErrors[field] += messages[key] + ' ';
}
}
}
}
テンプレート
<p-calendar formControlname="time_from" [locale]="pl" dateFormat="yy-mm-dd" [monthNavigator]="true" [yearNavigator]="true"
yearRange="2010:2030" (blur)="setTimeFrom($event)" readonlyInput="true" required></p-calendar>
<p-calendar formControlname="time_to" [locale]="pl" dateFormat="yy-mm-dd" [monthNavigator]="true" [yearNavigator]="true"
yearRange="2010:2030" [minDate]="minDate" readonlyInput="true" required></p-calendar>
現在の行動:日付をピックアップし、このために、何のイベントがあるされていない場合、バリデータは気付きません値の変化をキャッチするために解雇されました。つまり、onValueChanged
はtime_from
とtime_to
と言います。これをどうすれば解決できますか?
ありがとうございましたNehal、私は目が見えないので、半角で2つのスペルミスがあることを忘れました。 – Haseoh
気分が悪いと感じないでください。 – Nehal