Есть каталог с товарами и в нем есть фильтры, сортировка, управление кол-вом товара на странице, пагинация, ну и прочее стандртные вещи, типо фильтров по цене. И надо сделать так, чтобы состояние приложения можно было востановить, скопировав ссылку и передав ее.
Я подумал, что верный путь - при взаимодействии, например, с фильтрами надо изначально видоизменить урл ( queryParams ), а потом уже быть подписанным на и изменение урла, и с фильтрами получается довольно удобно, ведь при смене урла с /catalog/412 на catalog/413 все queryParams уничтожатся строка filters самоустранится и это будет корректно и то же самое с параметром page, price, но что делать с такими вещами, как размер страницы ( кол-во товаров на странице ), сортировка, которые должны в принципе быть константами. В общем, пока не сильно изящно выходит и может есть какой-то стандартный флоу для всего этого действа? Ну, пока подумал, просто это в некие константы вынести и при каждом изменении роута просто дописывать эти параметры - не самое красивое решение
Храни состояние в сервисе в виде обсервейблов, подписывайся на их изменение и с delay в ~10 мс пиши в роут в любом виде, который ты сможешь распарсить. А вот при загрузке страницы считывай состояние и загоняй его в сервис до всех подписок
https://stackblitz.com/edit/tplk-angular-sync-input-and-query-params-search?file=src%2Fapp%2Fapp.module.ts что-то в этом роде?
Обсуждают сегодня