当初は正規表現エラーと思われる問題がありましたが、材料の日付ピッカーが日付文字列を入力として完全に入力する方法に問題があると推測しました入力に表示されている日付の文字列バージョンの代わりに日付オブジェクトを使用し、検証メッセージを表示します。マテリアル2日付ピッカーと日付パターンバリデーターとの競合
以下は、私がそれを使用している方法と同じ日付を示す2つのスクリーンショットが日付ピッカーで妥当性検査に失敗し、日付ピッカーが削除/コメントアウトされて入力に単純に入力された場合に渡します。日付ピッカー
で
<div class="col-xs-12 col-sm-6">
<div class="form-group" [ngClass]="{'td-group-error': (changeForm.get('changeInfoFG.dateSubmitted').touched || changeForm.get('changeInfoFG.dateSubmitted').dirty) && !changeForm.get('changeInfoFG.dateSubmitted').valid }">
<span><input id="dateSubmittedId" class="form-control" type="text" formControlName="dateSubmitted" [mdDatepicker]="sbdate" style="width:90%;display:inline-block">
<md-datepicker-toggle [for]="sbdate"></md-datepicker-toggle>
<md-datepicker #sbdate></md-datepicker></span>
<div class="error-block" *ngIf="(changeForm.get('changeInfoFG.dateSubmitted').touched || changeForm.get('changeInfoFG.dateSubmitted').dirty) && !changeForm.get('changeInfoFG.dateSubmitted').valid"
role="alert" style="color: #ae0101"> <strong>!</strong>
<span *ngIf="changeForm.get('changeInfoFG.dateSubmitted').errors.required">Required</span>
<span *ngIf="changeForm.get('changeInfoFG.dateSubmitted').errors.pattern">Date must be mm/dd/yyyy, date is currently: {{changeForm.get('changeInfoFG.dateSubmitted').value}}</span>
</div>
</div>
</div>
日付ピッカー
、これはM/Dの日付の短い日付の文字列表現を強制する、使用されるバリあるなし/ yyyy/mm/dd/yyyy形式です。
dateSubmitted: [null, [Validators.required, Validators.pattern('^(?:(?:10|12|0?[13578])/(?:3[01]|[12][0-9]|0?[1-9])/(?:1[8-9]\\d{2}|[2-9]\\d{3})|(?:11|0?[469])/(?:30|[12][0-9]|0?[1-9])/(?:1[8-9]\\d{2}|[2-9]\\d{3})|0?2/(?:2[0-8]|1[0-9]|0?[1-9])/(?:1[8-9]\\d{2}|[2-9]\\d{3})|0?2/29/[2468][048]00|0?2/29/[3579][26]00|0?2/29/[1][89][0][48]|0?2/29/[2-9][0-9][0][48]|0?2/29/1[89][2468][048]|0?2/29/[2-9][0-9][2468][048]|0?2/29/1[89][13579][26]|0?2/29/[2-9][0-9][13579][26])$')]],
私は、それが実際に入れている完全な日付オブジェクトとは対照的に、示すように、日付文字列を正確に入力中の物質DatePickerの場所を取得するには日付ピッカーを使用できるようにしたいと思います。誰かが私の図助けることができますどのように私はそれについて行くだろうか?
私の例のようにMaterial Datepicker検証の検証エラーを表示するために同じロジックとスタイルを使用する方法はありますか?彼らはデフォルトでどのように表示/検証しますか? – David
カスタムバリデータを実行することをお勧めします。 "[(ngModel)]をバインディングする角度の材料DatePickerは日付オブジェクトを配置し、あなたのregExpと一致しないためです。カスタムバリデーターでは、日付のコントロール値がオブジェクトであるかどうかをテストし、年月日を抽出して、最後にすべてのユーザーをRegExpで検証します。カスタムバリデータリンクhttps://angular.io/guide/form-validation#custom-validators –