У меня был инструмент выбора даты, который должен динамически отключаться и включаться с помощью переключателя, нажимающего кнопку.Все компоненты из библиотечного углового материала 6. И поскольку я использую реактивный подход для своих обработчиков форм, я не могу просто использовать директиву [disable]
.Я получил еще ошибку:
It looks like you're using the disabled attribute with a reactive form directive. If you set disabled to true
when you set up this control in your component class, the disabled attribute will actually be set in the DOM for
you. We recommend using this approach to avoid 'changed after checked' errors.
Example:
form = new FormGroup({
first: new FormControl({value: 'Nancy', disabled: true}, Validators.required),
last: new FormControl('Drew', Validators.required)
});
И у меня есть идея заменить FormContol
внутри FormGroup
прямо в TS, что-то вроде этого:
toggleDatePicker() {
this.isDateRange = !this.isDateRange;
this.form.removeControl('to');
if (this.isDateRange) {
this.form.addControl('to', new FormControl({value: new Date(), disabled: false}))
} else {
this.form.addControl('to', new FormControl({value: null, disabled: true}))
}
}
И эта работа для input
тег, но mat-datepicker-toggle
остается с исходным состоянием.mat-datepicker-toggle
состояние не зависит от FormControl
.
<mat-form-field>
<input
matInput
[matDatepicker]="to"
formControlName="to"
[disabled]="isDateRange"
>
<mat-datepicker-toggle matSuffix [for]="to"></mat-datepicker-toggle> // THIS IS NO CHANGE(
<mat-datepicker #to></mat-datepicker>
</mat-form-field>
Независимо от моих FormControl
манипуляций mat-datepicker-toggle
всегда в одном и том же состоянии:
OFF ON
Как я могу манипулировать mat-datepicker-toggle
мыслей FromControl
?