如何在Angular2中重新启动组件?

时间:2016-10-25 03:07:16

标签: angular

我遇到了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 - function,我比较日期)

关闭 - 我在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>

功能&#34;点击&#34;:

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

在datepicker中,我将onInit更改为onChanges 如果我调用方法点击第二个datepicker组件,它可以工作,但如果我调用方法&#34;点击&#34;在任何其他div,&#34; el&#34; - 未定义。我需要帮助

更新:

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 && startDate >= endDate){
        let newDate = new Date(startDate);
        newDate.setDate(newDate.getDate()+7);
        item.date_end = this.getDate(newDate);
    }
}

P.S。对不起我的英文:)

0 个答案:

没有答案