Нет Событие после щелчка при модальном закрытии?

Когда я закрываю модальное окно, мне нужно вызвать функцию (установить false или сбросить содержимое модального окна с помощью элементов управления формы), но я не нашел никакого обработчика для события после щелчка, как я мог это сделать?

 <clr-modal [(clrModalOpen)]="opened" [clrModalStaticBackdrop]="true">
        ...
 </clr-modal>

Спасибо.


person yala ramesh    schedule 21.10.2017    source источник


Ответы (1)


[(clrModalOpen)]="opened" - это просто синтаксический сахар для [clrModalOpen]="opened" (clrModalOpenChange)="opened = $event" (см. https://angular.io/guide/template-syntax#two-way-binding--- для получения дополнительной информации).

Итак, в вашем случае обработчик событий - (clrModalOpenChange). Также обратите внимание, что в Angular выходы не запускаются, когда изменение происходит от соответствующего входа в двусторонней привязке, потому что это приведет к возникновению цикла. Это означает, что если ваша собственная кнопка «Закрыть» обновляет модальное окно через ввод, вывод не будет запущен. Решение состоит в том, чтобы просто убедиться, что ваш обработчик вызывается как из наших выходных данных, так и из вашего собственного метода, чтобы закрыть модальное окно, если оно есть.

Поскольку меня попросили привести живой пример, вот два из них:

  1. Элегантное решение с геттером и сеттером, сохраняет синтаксис двусторонней привязки: https://plnkr.co/edit/7J8MfH?p=preview
  2. Явный слушатель с версией без сахара: https://plnkr.co/edit/6cWHwu?p=preview

Я предпочитаю первый, потому что в таких простых геттерах и сеттерах нет рисков для производительности. Но я подумал, что, поскольку я упомянул синтаксис без сахара, я мог бы также показать пример.

person Eudes    schedule 24.10.2017
comment
Эдес, ваше объяснение понятно. Но я не мог заставить его работать. Можете привести живой пример? Кроме того, я полагаю, вы являетесь частью команды, разрабатывающей Clarity. Хотя я использую его в течение некоторого времени, я все еще не могу полностью получить все (например, эту нотацию Banana-In-a-Box) из документации Clarity. Планируете ли вы доработать / улучшить (дать ссылку на Angular по мере необходимости) в вашей документации? - person Soumya Kanti; 25.10.2017
comment
@SoumyaKanti: Я добавил к ответу пару плункеров. Что касается документации, я не думаю, что наша задача - заново задокументировать то, что уже есть на сайте Angular. Мы ожидаем, что люди, использующие Clarity, будут знать стандартный синтаксис шаблона Angular и другие функции, отличные от Clarity. - person Eudes; 25.10.2017