检测Angular 2+中Input()对象属性的变化

时间:2017-12-03 22:56:01

标签: angular angular2-changedetection

我有一个接受TimeInterval属性的TimeInputComponent:

export class TimeInterval {
  startTime = "0000";
  endTime = "0000";
}

@Component({...})
export class TimeInputComponent {
  startTime: string;
  endTime: string;
  private _interval: TimeInterval;
  @Input()
  set interval(value: TimeInterval) {
    this._interval = value;
    this.startTime = this.addColon(value.startTime);
    this.endTime = this.addColon(value.endTime);
  }
  private addColon(time: string) {
    return time.substr(0, 2) + ':' + time.substr(2, 2);
  }
}

我使用TimeInputComponent' s startTimeendTime来显示模板中冒号的时间,例如: G。 10:00。如何检测_interval字段的更改时间,以便我可以更新startTimeendTime

明显的方法就是这样写:

{{addColon(_interval.startTime)}}

但这里不可能,因为我必须在startTime上独立更新endTime_interval(请参阅更新1)。

我希望有可能是我要求的,因为更改检测模型了解何时必须重新计算模板中的_interval表示,那么为什么我不能在组件中获取此事件?

更新1

我像这样使用startTime

<input #start type="text" [ngModel]="startTime" (ngModelChange)="onTimeInputChange($event, start, 'start')">

我允许用户编辑startTime值,并且只在centain情况下将更新的值推回到_interval。

0 个答案:

没有答案