Показать сообщение отдельно
  #4 (permalink)  
Старый 27.08.2018, 14:47
Аватар для destus
Профессор
Отправить личное сообщение для destus Посмотреть профиль Найти все сообщения от destus
 
Регистрация: 18.05.2011
Сообщений: 1,207

kotelok,
Цитата:
С 'onHide' не очень понятно. Открыто модально окно, из него открыто другое модальное окно. В обоих подписались на 'BsModalService.onHide'. Закрылось последнее окно, событие получили оба подписчика.
А вы подписывайтесь не в компоненте, который служит для контента модального окна, а в компоненте на уровень выше, т.е. в данном случае в том, где определен метод showAbout. Это позволит завести массив, openedWindows: BsModalRef[] и при открытии окна делать push инстанса BsModalRef, а при срабатывании подписки onHide всегда знать какое именно окно закрылось (всегда то, которое последним открылось, т.е. openedWindows[openedWindows.length - 1]), не забывая делать splice затем, чтобы поддерживать коллекцию в актуальном состоянии.
Цитата:
А если событие не перехватывать, получается, что при закрытии окна самим 'bootstrap', значение 'result' никогда не будет установлено, а значит и подписка, дажче через 'result.pipe(takie(1)).subscribe' зависнет в ожидании навсегда.
В данном случае лучше отписывать в ngOnDestroy
Цитата:
Или такая подписка сбросится, если объект компонента будет уничтожен?
нет
Цитата:
И есть ли какая-нибудь возможность отловить событие, когда сборщик мусора собирает объект?
нет
Ответить с цитированием