Событие datePicker (onShown) в ngx-bootstrap запускается до того, как календарь действительно появится - PullRequest
0 голосов
/ 14 сентября 2018

Я работаю с ngx-bootstrap * rangeDatePicker , и я пытаюсь перейти к предыдущему месяцу, как только отобразится rangeDatePicker, используя его внутри моей функции-обработчика, которая вызывается с событием onShown.

Код следующий: в HTML

 <input id="input-range-dates" type="text" class="form-control" bsDaterangepicker #drp="bsDaterangepicker" [bsConfig]="bsConfig"
                 [(ngModel)]="bsRangeValue" (ngModelChange)="onChanges($event, drp)" [maxDate]="maxDate" placement="bottom"
                     (onShown)="handler('onShown')" (onHidden)="handler('onHidden')" readonly/>

Как видите, свойств много, но только один по этому вопросу -

(onShown)="handler('onShown')"

в JS

handler(value: string): void {
if ('onShown' === value) {
      [].slice.call(document.getElementsByClassName('previous')).filter(element =>
        element.innerText === '‹')[0].click(); // previous Month
  }
}

Однако, если я отлаживаю его в Chrome, я вижу, что календарь с кнопкой еще не появился, и действие щелчка не меняет месяц.

Кто-нибудь может помочь с этим? Я застрял ..

1 Ответ

0 голосов
/ 17 сентября 2018

Вместо использования одного и того же метода-обработчика для событий onShow и onHidden:

(onShown)="handler('onShown')" (onHidden)="handler('onHidden')"

.

handler(value: string): void {
if ('onShown' === value) {
      //...
  }
}

Я предлагаю создать два отдельных метода и передать действительное $event внутрь:

(onShown)="onShow($event)" (onHidden)="onHidden($event)"

чтобы вы могли поиграть с событием и посмотреть, что происходит:

onShow(event) {
  console.log(event);
  // ...
}

onHidden(event) {
  // ...
}
...