Проблема с событием valueChanged Wijmo + привязка данных на Angular 2

У меня есть следующий код, который запускает функцию всякий раз, когда пользователь меняет значение wj-input-time:

@Component({
    selector: 'my-app',
    template: '<wj-input-time [step]="1" (valueChanged)="test()"></wj-input-time>'
})
export class AppComponent {

  test() {
    console.log('test');
  }

}

Выше работает нормально, но когда я добавляю привязку данных на вход valueChanged Событие запускается, когда приложение загружается, а также когда пользователь просто щелкает ввод, который не является желаемым результатом:

@Component({
    selector: 'my-app',
    template: '<wj-input-time [(value)]="testDate" [step]="1" (valueChanged)="test()"></wj-input-time>'
})
export class AppComponent {

  testDate: Date = new Date();

  test() {
    console.log('test');
  }

}

Я потратил много времени на чтение документации Wijmo, но это не помогло. Что я пропускаю или делаю неправильно?

Я использую Angular 2 final и Wijmo 5.20162.211 eval

Вот Plunker, который показывает проблему (проверьте журнал консоли): http://plnkr.co/edit/RFo84NEUbypSWwPPu8Go?p=preview

Вот также скриншоты:

2 ответа

Решение

Это потому, что дата, которую вы создали, с точностью до секунды, а виджет только с точностью до минуты. Из-за этого виджет переписывает переменную, как только он вычисляет другие необходимые ему значения - когда вы нажимаете кнопку со стрелкой.

Если вы создаете дату, которая точна только для данной минуты, второе сообщение журнала больше не появляется.

@Component({
  selector: 'my-app',
  template: '<wj-input-time [(value)]="testDate" [step]="1" (valueChanged)="test()"></wj-input-time>'
})
export class AppComponent {

  testDate: Date;

  constructor() {
    var d = new Date();
    this.testDate = new Date(d.getFullYear(), d.getMonth(), d.getDate(), d.getHours(), d.getMinutes());
  }

  test() {
    console.log('test');
  }

}

Смотрите скорректированный код PLNKR.

Это определенно ошибка. Даже когда я присваиваю "нулевое" значение связанному свойству, виджет все равно вызывает событие valueChanged().

Если ввод нулевой, ничего не нужно менять. Если вход "инициализирован", то ничего не меняется.

Определенно ошибка.

Другие вопросы по тегам