Как повторно запустить компонент в Angular2?

#angular

#angular

Вопрос:

У меня проблемы с компонентом datepicker. Я использую его дважды. Когда я выбираю дату в первом datepicker и выбираю дату, равную или более позднюю, чем дата во втором компоненте, во втором компоненте дата должна быть установлена на неделю позже.

Как я это делаю: шаблон

 <datepicker
    [(ngModel)]="item.updated"
    [expanded]="true"
    [viewFormat]="'DD/MM/YYYY'"
    (closed)='compareDates(item)'
></datepicker>
<datepicker
    [(ngModel)]="item.date_end"
    [expanded]="true"
    [viewFormat]="'DD/MM/YYYY'"
    (closed)='compareDates(item)'
></datepicker>
  

compareDates — функция, где я сравниваю даты)

закрытый пользовательский метод, который я добавляю в компонент datepicker

 close() {
    this.opened = false;
    this.closed.emit();
}
  

при изменении item.date_end во втором компоненте дата не выбирается в календаре

Я пытаюсь повторно запустить второй компонент вручную

 <datepicker
    #datepick
    (click)="clicked(datepick, item)"  <-- this
    [(ngModel)]="item.date_end"
    [expanded]="true"
    [viewFormat]="'DD/MM/YYYY'"
    (closed)='compareDates(item)'
></datepicker>
  

функция «щелкнула»:

 clicked(el:DatePickerComponent, item: any){
   el.ngOnChanges();
}
  

В datepicker я меняю OnInit на onChanges
Если я вызываю метод click во втором компоненте datepicker, это работает, но если я вызываю метод «click» в любом другом div, «el» — не определено. Мне нужна помощь

обновлено:

 compareDates(item:any){
    let startDate = new Date(item.updated).setHours(0,0,0,0);
    let endDate = new Date(item.date_end).setHours(0,0,0,0);
    let currentDate = new Date().setHours(0,0,0,0); 
    if (startDate < currentDate){
        item.updated = new Date(currentDate);
    }
    if (endDate amp;amp; startDate >= endDate){
        let newDate = new Date(startDate);
        newDate.setDate(newDate.getDate() 7);
        item.date_end = this.getDate(newDate);
    }
}
  

p.s. извините за мой английский 🙂

Комментарии:

1. Можете ли вы добавить реализацию вашей функции compareDates

2. Я обновляю вопрос