У меня есть компонент для редактирования диапазонов дат (даты вступления в силу и истечения срока действия).Когда какая-либо из дат изменяется, она генерирует новый диапазон дат.Однако после эмиссии вызывается @Input() set dateRange(...)
.Это ожидаемое поведение?Если так, то зачем родительскому компоненту устанавливать свойство связанного дочернего компонента, когда он просто получает новое значение от дочернего?
export class EditDateRange {
effectiveDate?: Date;
expireDate?: Date;
@Output() dateRangeChange = new EventEmitter<DateRange>();
@Input()
get dateRange(): DateRange {
return new DateRange({
effectiveDate: this.effectiveDate,
expireDate: this.expireDate,
});
}
// Gets called when dateRangeChange emitts an event
set dateRange(dateRange: DateRange) {
if (dateRange.hasEffectiveDate) {...}
if (dateRange.hasExpireDate) {...}
}
dateRangeChanged() {
this.dateRangeChange.emit(this.dateRange);
}
}
Тогда в родительском HTML
<div>
...
<edit-date-range [(dateRange)]="dateRange"
(dateRangeChange)="validateDateRange($event)">
</edit-date-range>
</div>
Проблема (или, может быть, поведение) исчезает, когда я меняю [(dateRange)]
на [dateRange]
.