Я реализовал пользовательский элемент управления, как показано ниже, но хотя я вижу печать даты из monthSelected
, родительский элемент управления не получает событие изменения.
Я реализовал пользовательский элемент управления вот так
@Component({
selector: 'app-month-picker',
templateUrl: './month-picker.component.html',
styleUrls: ['./month-picker.component.scss'],
providers: [
{
provide: NG_VALUE_ACCESSOR,
useExisting: forwardRef(() => MonthPickerComponent),
multi: true
}
]
})
export class MonthPickerComponent implements OnInit, ControlValueAccessor {
private onChange: (_: Date) => void
monthSelected(selectedDate: Date): void {
if (this.onChange) {
console.info(selectedDate)
this.onChange(selectedDate)
}
}
// Called when the view changes
registerOnChange(fn: (_: Date) => void): void {
this.onChange = fn
}
В родительском я сделал это:
<app-month-picker (change)="onMonthSelected($event)" [(ngModel)]="selectedMonth"></app-month-picker>
Событие onMonthSelected
никогда не запускается. Я также преобразовал selectedMonth
в метод получения / установки, и метод также не вызывается.
Какой шаг я здесь пропустил?