为了使路由在服务器主机中正常工作,我们可以在app-routing.module.ts文件中启用useHash = true,如下所示。
@NgModule({
imports: [RouterModule.forRoot(routes, { useHash: true })],
exports: [RouterModule]
})
实际上,使用该解决方案,我们可以在应用程序中的组件内进行导航。但它总是在URL选项卡中显示#标签。
即:http://00.00.190.147:4202/# /请求
似乎有些奇怪的看法。在Angular应用程序中,有什么方法可以隐藏它,也可以通过其他任何方法在主机中进行完美的路由。
将useHash设置为false。
例如:-RouterModule.forRoot(appRoutes,{useHash:false})
当您使用ng serve
在本地服务您的应用程序时,它具有自己的服务器配置。您必须同样配置服务器,以便所有路由都指向index.html
。角度路由器观察浏览器URL并更改应用程序的视图。角度应用程序是单页应用程序。
[检查https://angular.io/guide/deployment#routed-apps-must-fallback-to-indexhtml以将浏览器配置设置为指向index.html。
[此外,如果您有自己的API使用相同的域,则可能需要将这些路径放在angular.json的资产数组中,这样,角度应用程序就不会将它们视为角度路线,而会将它们视为资源(只是一个简单的技巧!)如果您使用的是NodeJs服务器,则不一定需要这样做,但是对于IIS来说,这可能是一个很好的技巧。
例如:如果您的角度应用程序在http://www.example.com
运行,并且您的API类似于http://www.example.com/api/users
,http://www.example.com/api/user/52
,http://www.example.com/api/books
等,则应在“ angular.json”文件的资产数组中添加“ api”,如下所示: http://www.example.com/api/
将被视为资产,而不是角度申请路线的一部分。
为此,您可以将标志useHash = false设置或将其删除。 RouterModule.forRoot(routes)