请帮助解决我遇到的问题。我正在通过Web服务从数据库加载路由,并且使用指向那些路由的链接时,一切都会按预期进行。但是,当我刷新页面或直接在地址栏中写网址时,路由不起作用,为什么?
在刷新浏览器上,我遇到找不到URL的问题
请帮助我解决这个问题。
但无法解决此问题。
我已将我的代码添加到“ 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);
});
}
在刷新浏览器上,应成功加载同一页面。
答案 0 :(得分:1)
但是当我刷新页面或直接在地址栏中写网址时,路由不起作用,为什么?
您的应用程序中还没有其他路由。在应用程序完全启动之前,您将不得不尝试在引导时加载它们。
您可以尝试使用APP_INITIALIZER(https://hackernoon.com/hook-into-angular-initialization-process-add41a6b7e),否则必须在角度脚本加载应用程序之前公开公共变量,并在路由配置中直接附加必需的实体。