Проблема с событием 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().
Если ввод нулевой, ничего не нужно менять. Если вход "инициализирован", то ничего не меняется.
Определенно ошибка.