Остановка выполнения операции с помощью прерываемого события элемента управления

События, генерируемые элементом управления, могут быть стандартными (непрерываемые) и прерываемыми, с помощью которых обработчик может остановить выполнение операции (например, сохранение карточки).

Чтобы создать прерываемое событие:
  1. Добавьте событие в описатель элемента управления:

    <?xml version="1.0" encoding="utf-8" ?>
    <Controls>
      <Control Name="SomeControl" DisplayName="Пример элемента управления">
        <Properties>
          <Property Type="Name" />
        </Properties>
        <Events>
          <Event Name="someEventing" DisplayName="Перед выполнение операции"/> (1)
        </Events>
      </Control>
    </Controls>
    1 Прерываемое событие.
  2. В клиентском компоненте элемента управления в классе параметров для события укажите тип CancelableApiEvent:

    export class SomeControlParams extends BaseControlParams {
        @apiEvent someEventing?: CancelableApiEvent<IEventArgs>;
    }
  3. В клиентском компоненте элемента управления в классе реализации:

    1. Проинициализируйте прерываемое событие с помощью метода CancelableEvent.Create:

      construct() {
          super.construct();
      
          this.state.someEventing = CancelableEvent.Create<IEventArgs>(this.state.wrapper);
      }
    2. Во внутреннем обработчике события, вызываемого перед выполнением операции, добавьте код, который будет выполняться при прерывании события внешними обработчиками, и код для продолжения обработки события:

      protected internalEventHandler = async () => {
          try {
              await CancelableEvent.cast(this.state.someEventing).trigger().deferred;
      
              console.log("Выполнение операции ..."); (1)
          } catch {
      
              console.log("Выполнение операции прервано ..."); (2)
          }
      }
      1 Код, вызываемый при продолжении операции.
      2 Код, вызываемый при отмене операции.