Угловые RxJ: как обрабатывать приоритет событий Outputs на основе порядка срабатывания - PullRequest
0 голосов
/ 08 октября 2018

В моем приложении Angular у меня есть виджет, который имеет два события.Этот виджет взят из сторонней библиотеки, и я не могу изменить его поведение.

<myWidget
  (onAlwaysEvent)="onAlwaysEvent($event)"
  (onSometimesEvent)="onSometimesEvent($event)">
</myWidegt>

Когда оба запускаются: эти два события запускаются почти одновременно, но в следующем порядке:

1- onAlwaysEvent

2- onSometimesEvent

Моя ситуация такова:

  • Когда оба уволены: Мне нужно установить onSometimesEvent в качестве приоритета и отменить первый (onAlwaysEvent)
  • И когда 'onAlwaysEvent' - единственный выстрел: очевидно, это нормально

(У меня нет случаев, когда onAlwaysEvent не срабатывает)

Идеи для установки onSometimesEvent в качестве приоритета, просто при срабатывании ?

Предложения?

1 Ответ

0 голосов
/ 08 октября 2018

Вы можете вызвать одно событие для обоих случаев, а затем проверить внутри функции, было ли оно «всегда» или «иногда», добавив логическое значение в качестве параметра.

<myWidget
  (onAnyEvent)="onAnyEvent($event, $sometimes)">
</myWidget>

<sometimes-button onclick="onAnyEvent(e, true)" />
<always-button onclick="onAnyEvent(e, false)" />

Затем проверить функцию, еслилогическое значение было установлено:

onAnyEvent(event, sometimes) {
    if (sometimes) {
        // only do sometimes code
    } else {
        // only do always code
    }

    // do code for both
}
...