• Почему Angular CDK при возвращении назад через браузер убирает query параметры?

    @ali-tnkh Автор вопроса
    eRKa, нашла закрытие попапов на this.router.events, а именно на instanceof NavigationStart. Я NavigationStart и подобное вообще не использую, поэтому сначала даже не обратила внимание, не знала, что искать. Спасибо.
  • Почему Angular CDK при возвращении назад через браузер убирает query параметры?

    @ali-tnkh Автор вопроса
    Код открытия попапа через параметры:
    const queryParamToModalMap: Record<ModalCode, ComponentType<unknown>> = {
          'atlas-item': PopupAtlasItemComponent,
          'medialib-item': PopupMedialibItemComponent,
          'news-item': PopupNewsItemComponent,
          'search': PopupSearchItemComponent,
        };
    
        this.activatedRoute.queryParams
          .pipe(untilDestroyed(this))
          .subscribe(params => {
            let noOneKnownModalsInParams = true;
    
            Object.keys(params).forEach(paramName => {
              const modalCmp = queryParamToModalMap[paramName];
              if (!modalCmp) {
                return;
              }
    
              noOneKnownModalsInParams = false;
              this.modalsService.open(paramName, modalCmp, {code: params[paramName]});
            });
    
            if (noOneKnownModalsInParams) {
              Object
                .keys(queryParamToModalMap)
                .forEach(modalCode => this.modalsService.close(modalCode));
            }
          });


    Ссылка в модальном окне просто
    <a class="article d-block" [routerLink]='item?.url'>


    В настройках роутера ничего особого нет (например страница, на которой открывается модалка с параметрами atlas-item, поведение при переходе по ссылке в этом модельном окне такое же):
    {
        path: 'services/atlas/:sectCode',
        loadChildren: () => import('./pages/atlas/page-atlas/page-atlas.module').then(m => m.PageAtlasModule)
      },
      {
        path: 'services/atlas',
        loadChildren: () => import('./pages/atlas/page-atlas/page-atlas.module').then(m => m.PageAtlasModule)
      },

    Ну и внутри модулей страниц:
    RouterModule.forChild([{path: '', component: PageAtlasComponent}])


    Окно поиска может открываться на любой странице, потому что кнопка открытия окна находится в хэдере, т.е. к любой странице можно добавить параметр search, откроется модальное окно поиска.