Проблема при загрузке маршрутов из БД динамически в angular 2 - PullRequest
0 голосов
/ 06 июня 2019

пожалуйста, помогите с проблемой, которая у меня есть. Я загружаю маршруты из БД через веб-сервис, и все работает, как ожидается, при использовании ссылок на эти маршруты. Но когда я обновляю страницу или пишу URL-адрес непосредственно в адресной строке, маршрут не работает, почему?

в браузере обновлений я получаю URL-адрес не найден

Пожалуйста, помогите мне в этом вопросе.

  1. Я попытался прокомментировать нашу базу href = '/' в index.html, чтобы она не перенаправляла в root
  2. Я пытался удерживать управление до ответа API, используя async / await, так что сначала создается маршрутная коллекция, а затем Controll будет двигаться вперед для навигации

, но не может решить эту проблему.

Я добавил свой код в конструктор app.component.ts. Я вызываю функцию, которая загружает маршруты

   async getdynamicroutes1(){
  const config = this.router.config;
   await this.rest.fetchinpromise('Religious/GetRoutesCollection').then(data => {
        var indexData = data;
        indexData.forEach(element => {
          let url : string = `${element.EName.toLowerCase()}/:id`;
          config.push({path: url, component: ChaptersComponent, runGuardsAndResolvers:"always"});

          element.ReligiousBooks.forEach(religiousbook => {
            religiousbook.Chapters.forEach(chapter => {
              url = `${element.EName.toLowerCase()}/${this.removeSpace(religiousbook.EName)}/${this.removeSpace(chapter.EName)}/:id`;
              config.push({path:url, component: HomeDetailsComponent, runGuardsAndResolvers:"always"});
            });
          })
      });
      config.push({ path: "app/pagenotfound", component: PagenotfoundComponent })
      config.push({ path: "**", redirectTo: "app/pagenotfound", pathMatch: "full" } )
      this.router.resetConfig(config);
    },
    error => {
      console.log("Error :: " + error);
    });

}

в браузере обновления, та же страница должна успешно загрузиться.

1 Ответ

1 голос
/ 06 июня 2019

Но когда я обновляю страницу или пишу URL-адрес непосредственно в адресной строке, маршрут не работает, почему?

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

Вы можете попробовать использовать APP_INITIALIZER (https://hackernoon.com/hook-into-angular-initialization-process-add41a6b7e) или вам придется выставить открытую переменную до того, как угловой скрипт загрузит приложениеи добавьте необходимые значения непосредственно в конфигурацию маршрутизации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...