0

请帮助解决我遇到的问题。我正在通过 Web 服务从数据库加载路由,并且在使用这些路由的链接时一切都按预期工作。但是当我刷新页面或直接在地址栏中写入url时,路由不起作用,为什么?

在刷新浏览器时,我收到 URL not found 问题

请在这个问题上帮助我。

  1. 我试图在 index.html 中注释我们的基本 href='/' 以便它不会重定向到 root
  2. 我尝试使用 async/await 保持控制直到 api 响应,以便首先创建 routecollection,然后 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);
    });

}

在刷新浏览器时,同一页面应该会成功加载。

4

1 回答 1

1

但是当我刷新页面或直接在地址栏中写入url时,路由不起作用,为什么?

您的应用程序中还没有其他路由。在应用程序完全启动之前,您必须尝试在启动时加载它们。

您可以尝试使用 APP_INITIALIZER ( https://hackernoon.com/hook-into-angular-initialization-process-add41a6b7e ) 或者您必须在 Angular 脚本加载应用程序之前公开公共变量,并在路由配置中直接附加所需的实体.

于 2019-06-06T07:39:20.133 回答