Предотвратить разрушение компонента Angular 9 при изменении маршрута?

У меня есть компонент angular 9, который используется для загрузки данных (изображений) на сервер. Я хочу, чтобы компонент не обновлялся при маршрутизации. Я хочу, чтобы загрузка продолжалась даже при смене маршрута. Как мне этого добиться??


person Praveen Nat    schedule 10.06.2020    source источник


Ответы (1)


Скорее всего, вы хотите реализовать логику загрузки в службе (а не в компоненте). Затем вы внедряете эту службу (которая может быть предоставлена ​​в родительском компоненте или модуле или даже как singleton в зависимости от ваших потребностей).

Затем ваш компонент сообщает службе начать загрузку, и загрузка продолжится, даже если пользователь уйдет со страницы, а сам компонент будет уничтожен.

Теперь имейте в виду, что это может быть плохой UX — если вы видите индикатор выполнения на полпути и уходите со страницы, вы обычно не ожидаете, что загрузка продолжится. Тем более, что это произойдет, если пользователь выйдет за пределы SPA. Но это другое дело, и я сам не эксперт по UX.

person TotallyNewb    schedule 10.06.2020
comment
Дело в том, что размер загружаемого файла на сервер превышает 100 ГБ, и я хочу, чтобы мой пользователь мог выполнять другие задачи в моем приложении, пока загрузка продолжается: 3 - person Praveen Nat; 10.06.2020
comment
Ага, тогда однозначно перенесите логику в сервис. Затем вы можете сделать так, чтобы служба выдавала информацию об обновлениях статуса, и при необходимости другой компонент отображал обновления статуса независимо от текущего маршрута. В случае таких больших файлов вы также можете сделать эту службу ответственной за просмотр изменений навигации за пределами приложения angular и предупредить пользователя, что он остановит текущую загрузку. - person TotallyNewb; 10.06.2020
comment
изменения навигации за пределами angular ?? Я не понял эту часть? - person Praveen Nat; 10.06.2020
comment
Когда пользователь переходит в любое место за пределами вашего приложения, например. google.com или что-то еще. Это означает, что загрузка остановится, так как будет выгружена вся страница. Например, установите флажок stackoverflow.com/questions/7317273/ - person TotallyNewb; 11.06.2020