Я знаю, что он довольно старый, и, начиная с Angular 6+, вы больше не можете смешивать ngModel и реактивные формы.Вот немного workaroud с небольшой настройкой CSS, так что всплывающее окно DatePicker по-прежнему отображается в нужном месте.
datepicker.component.html
<input #dateInput class="hidden-date-input" [matDatepicker]="datepicker" formControlName="myDatePicker" readonly>
<input placeholder="Choose a date" class="form-control" (click)="datepicker.open()" [readonly]="true" [value]="fullDate">
<mat-datepicker-toggle matSuffix [for]="datepicker"></mat-datepicker-toggle>
<mat-datepicker #datepicker disabled="false" (closed)="dateInput.blur()"></mat-datepicker>
datepicker.component.ts
...
export class DatepickerComponent {
get fullDate() {
const dateValue = this.form.controls['myDatePicker'].value;
if (!dateValue) { return ''; }
return moment(dateValue).format('MM/DD/YYYY');
}
css
.hidden-date-input {
width: 0;
border: none;
padding: 0;
}
Спасибо PraSame за идею.