ngOnInit
жизненный цикл запускается только при первом отображении представления компонента.
Поскольку старый Tile Component
не разрушается и всегда находится в фоновом режиме, даже когда отображается FullScreenComponent
, ловушка жизненного цикла никогда не срабатывает, даже когда вы закрываете компонент.(Я предполагаю, что вы не используете маршрутизатор для навигации, но используете его как всплывающее окно, поскольку есть кнопка закрытия, как показано в вопросе)
Не может помочь вам выделить проблему или помочь с предложениями, если вы неподелитесь кодомНо причина того, что ngOnInit не запускается в соответствии с этим вопросом, заключается в том, что компонент не создается заново.
Обновление: я до сих пор не могу понять, зачем вам нужно запускать ngOnInit?Если вы просто хотите выполнить код внутри, сделайте его отдельной функцией, скажем initSomething
, затем вызовите его внутри ngOnInit, чтобы выполнить его в первый раз.Теперь, если вы просто вызовете эту функцию на crossDomainService.closeFullScreen
, вы получите желаемый эффект.
Чтобы вызвать функцию при каждом вызове closeFullScreen, вы можете создать Subject
в службе crossDomainService
и подписаться на неепоместите его внутрь ngOnInit()
и запускайте функцию initSomething
, упомянутую выше, каждый раз, когда она выдает значение.Внутри функции closeFullScreen
все, что вам теперь нужно сделать, это сделать Subject.next()
Прошу прощения за краткость, поскольку я не на своем рабочем месте и печатаю на мобильном телефоне, хотя для разработки кода должно быть достаточно поясненийпо своему усмотрению.