0

我有以下模板:

<input type="text" class="form-control" name="my_date" 
  [matDatepicker]="myDatepicker" #myDate="ngModel"        
  [(ngModel)]="myDateValue" id="my_date" required>                                        
<mat-datepicker-toggle [for]="myDatepicker"></mat-datepicker-toggle>                                                                                
<mat-datepicker #myDatepicker></mat-datepicker>  
<div *ngIf="myDate.errors && (myDate.touched || cFormDirective.submitted)">                                                   
  <div *ngIf="myDate?.errors?.required">            
    Please enter date
  </div>                                            
</div>  

单击提交时,输入文本框的样式正确应用为红色,但未显示消息。

正如您所看到的,这是一个模板驱动的表单,我不希望仅仅因为日期而将其更新为反应式表单,我也不使用 mat 表单字段,这样做会导致不同的设计。

知道如何显示消息吗?

4

1 回答 1

0

我认为问题是这样的cFormDirective.submited。使用等于 ngForm 的模板引用,例如

<form #myform="ngForm" (submit)="submit()">
    <mat-form-field>
        <input name="myDate" matInput [matDatepicker]="picker"
       placeholder="Choose a date" required 
         [(ngModel)]="myDateValue" #myDate="ngModel">
  <mat-datepicker-toggle matSuffix [for]="picker"></mat-datepicker-toggle>
  <mat-datepicker #picker></mat-datepicker>
  <mat-error *ngIf="myDate?.errors?.required">Please, enter date</mat-error>
</mat-form-field>
<div *ngIf="myDate.errors && (myDate.touched || myform.submitted)">                                                   <div *ngIf="myDate?.errors?.required">          
            Please enter date
    </div>                                          
</div> 
<button typpe="submit">click</button>
</form>

顺便说一句,如果你使用<mat-error>你会避免一些复杂的

于 2019-06-24T08:14:56.220 回答