p-calendar: ограниченный в одну сторону ngmodel вызывает зависание приложения - PullRequest
0 голосов
/ 26 ноября 2018

Я пытаюсь визуализировать компонент p-календаря.Данные, с которыми я работаю, всегда являются временными метками (обычными числами), а не объектами Date.

Я пытаюсь найти способ отображать и редактировать эти данные без создания дополнительного поля Date .Причина этого в том, что я пытаюсь придерживаться строгого принципа SSOT в своем приложении.

Итак, я попытался сделать следующее:

<p-calendar
     [ngModel]="convertToDate(myTimestamp)"
     [locale]="calenderTranslateService.getTranslationForCalendar()"
     (onSelect)="convertToTimestamp($event)"
    [dateFormat]="calenderTranslateService.getDateFormatForCalendar()">
</p-calendar>

Идеябыло то, что я бы дал начальное значение через односторонний [ngModel], и я буду отслеживать будущие изменения с помощью (onSelect), чтобы мои метки времени были согласованными.Во время этого процесса не нужно создавать никаких полей.

Функция convertToDate () довольно проста:

toDate(timestamp) {
    if (timestamp==null) return null;
    return new Date(timestamp);
}

К сожалению, когда я это делаю, мое приложение зависает, как толькорендеринг компонента, который содержит код выше.У меня нет времени редактировать календарь или делать какие-либо другие действия.Зависание происходит, даже если я удаляю свойство (onSelect) из p-календаря.Отладкой я вижу, что convertToDate () вызывается бесконечно.Только закрытие вкладки выводит меня из строя.Иногда зависает весь браузер, и мне приходится убивать его в диспетчере задач.

Теперь, если я заменю вызов функции convertToDate () на фактическое поле, проблема исчезнет, ​​но затем я откажусь от принципа SSOT, к которой я бы действительно хотел присоединиться.

Почему эта функция вызывается все время?Что я делаю неправильно?Есть ли другой способ использования p-календаря с моими временными метками, без нарушения SSOP?Заранее спасибо!

...