Я нашел лучший ответ в Угловом документе для вашего вопроса. Надеюсь, он предоставит вам четкий подход, чтобы узнать лучший выбор из *ngIf
и hidden
.
Разница между скрытием и удалением не имеет значения для простого абзаца. Неважно, когда элемент хоста привязан к ресурсоемкому компоненту. Такое поведение компонента продолжается даже тогда, когда оно скрыто. Компонент остается прикрепленным к его элементу DOM. Он продолжает слушать события. Угловое отслеживает изменения, которые могут повлиять на привязку данных. Независимо от того, что делает компонент, он продолжает делать.
Несмотря на невидимость, компонент и все его компоненты-потомки связывают ресурсы. Бремя производительности и памяти может быть существенным, отзывчивость может ухудшиться, и пользователь ничего не видит.
С положительной стороны, показывая элемент снова быстро. Предыдущее состояние компонента сохраняется и готово к отображению. Компонент не повторно инициализируется - операция, которая может быть дорогостоящей. Так что скрывать и показывать иногда нужно.
Но в отсутствие веских причин держать их в стороне, вам нужно будет удалить элементы DOM, которые пользователь не может увидеть и восстановить неиспользуемые ресурсы со структурной директивой, такой как
NgIf
.Эти же соображения применимы к каждой структурной директиве, независимо от того, встроены ли они или нет. Прежде чем применять структурную директиву, вы можете временно приостановить рассмотрение последствий добавления и удаления элементов и создания и уничтожения компонентов.
blockquote>
Вместо того, чтобы делать вызов внутри ProcessDataComponent
, вы можете сделать это внутри AppComponent
(тот, который содержит все приложение). Этот компонент долговечен и не будет уничтожен при навигации. Способ прослушивания нажатия кнопки (чтобы вызвать запрос), вероятно, должен быть через службу.
Вот краткое демо о StackBlitz .