網站搜尋

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>