datepicker
のカスタムバリデーターを反応形式グループを使用して作成しています。上記の例ではMaterial2 - Datepickerカスタムバリデーター値が文字列ではなく日付オブジェクトを返します
ファイル
form: FormGroup;
constructor(
private fb: FormBuilder,
private validatorSrv: CustomValidatorService,
) {}
createForm(): void {
this.form = this.fb.group({
trans_date: [null, [Validators.required, this.validatorSrv.validDate]]
});
}
私のクラスで今
CustomValidatorService
validDate(c: AbstractControl): any {
// It always return 'Mon Jan 01 2001 00:00:00 GMT+0800 (Taipei Standard Time)'
// When value is 1
// And 'Sat Dec 01 2001 00:00:00 GMT+0800 (Taipei Standard Time)'
// When value is 12
console.log(c.value);
}
それは常にjsのDateTimeオブジェクトを返します。
カスタムバリデーターAbstractControlから実際の入力値を取得するにはどうすればよいですか?
私が欲しいのは、日付ピッカー内のユーザーの実際の入力またはコントロール自体の実際の値です。だから、オブジェクトを任意の文字列に変換/解析するかどうかにかかわらず、文字列中のそのオブジェクトの長いdatetime形式は変更されません。 –
あなたの検証が有効な日付であれば、実際の日付があるかどうかをテストするだけです。そうでない場合は、ユーザーが有効な日付を指定していないことを意味します。バリデーターで入力テキスト値を取得できるかどうかはわかりません。私はあなたがコンポーネントにすることができます知っている。 – trichetriche
フォーマットがmm/dd/yyyyまたはmm-dd-yyyyの正規表現を使用している場合は、ユーザー日付の入力を検証するロジックを持っているため、文字列でそれを行う必要がある理由は、 'invalidDate:true' –