angular - NgxMatDatetimePicker 無法指派給類型 MatDatepickerBase
今天我使用 Angular 11.0.0 創建了一個新的 Angular 專案。然後我安裝了 @angular-material-components/datetime-picker,這是我 package.json 文件中部分內容的內容:
...
"@angular/core": "~11.0.0",
"@angular/material": "^11.0.0",
"@angular/animations": "~11.0.0",
...
"@angular-material-components/datetime-picker": "^4.0.5",
...
我所有的程式碼都運作良好,除了在我的 HTML 中,我定義了 mat-datepicker-toggle,並參考 ngx-mat-datetime-picker。我收到以下錯誤:
error TS2322: Type 'NgxMatDatetimePicker<any>' is not assignable to type 'MatDatepickerBase<MatDatepickerControl<any>, any, any>'.這是我的 HTML 代碼:
<input matInput [ngxMatDatetimePicker]="picker" placeholder="Choose a date"
formControlName="scheduledStartDateTime"
[min]="minDate"
(dateChange)="dateUpdated()" >
<mat-datepicker-toggle matSuffix [for]="picker"></mat-datepicker-toggle>
<ngx-mat-datetime-picker #picker [showSpinners]="true" [showSeconds]="false"
[stepHour]="1" [stepMinute]="1" [stepSecond]="1"
[touchUi]="false" [enableMeridian]="false"
[disableMinute]="false" [hideTime]="false">
</ngx-mat-datetime-picker>
我可以透過在 tsconfig.json 檔案中更改這個屬性,來禁止 Angular 標記這個驗證錯誤(並讓我的專案正常運行):
"angularCompilerOptions": {
...
"strictTemplates": false
}
然而,我希望透過設置 "strictTemplates": true 來獲得驗證的好處。
是不是我漏掉了什麼,還是你們能在這個錯誤修復時通知我一下?
答案#1
在這種情況下,你必須明確地禁用嚴格模板檢查,你可以使用 $any() 模板函數:
<input matInput [ngxMatDatetimePicker]="picker" placeholder="Choose a date"
formControlName="scheduledStartDateTime"
[min]="minDate"
(dateChange)="dateUpdated()" >
<mat-datepicker-toggle matSuffix [for]="$any(picker)"></mat-datepicker-toggle>
<ngx-mat-datetime-picker #picker [showSpinners]="true" [showSeconds]="false"
[stepHour]="1" [stepMinute]="1" [stepSecond]="1"
[touchUi]="false" [enableMeridian]="false"
[disableMinute]="false" [hideTime]="false">
</ngx-mat-datetime-picker>
