Javascript angular 2中的URL路由

Javascript angular 2中的URL路由,javascript,angularjs,angular,routing,url-routing,Javascript,Angularjs,Angular,Routing,Url Routing,我正在使用angular 2.1.1。我在我的应用程序中使用角度路由。很好用。当我点击一个菜单时,它会正确地排列。但问题是,当我在地址栏中键入URL而不是单击菜单时,会收到错误消息 我认为问题在于,当我键入URL并按enter键时,浏览器会向服务器发送请求。但是路由配置在客户机中。因此,服务器将响应一条错误消息 在angular 1中,有一个#In URL限制浏览器向服务器发送请求。但在angular 2中,URL中没有# 我可以配置服务器,使每个URL重定向到根URL。但这不是解决办法。我不能

我正在使用angular 2.1.1。我在我的应用程序中使用角度路由。很好用。当我点击一个菜单时,它会正确地排列。但问题是,当我在地址栏中键入URL而不是单击菜单时,会收到错误消息

我认为问题在于,当我键入URL并按enter键时,浏览器会向服务器发送请求。但是路由配置在客户机中。因此,服务器将响应一条错误消息

在angular 1中,有一个#In URL限制浏览器向服务器发送请求。但在angular 2中,URL中没有#

我可以配置服务器,使每个URL重定向到根URL。但这不是解决办法。我不能给任何URL添加书签


如何解决此问题?

您可以更改
定位策略

默认设置为
PathLocationStrategy
,但也可以使用
HashLocationStrategy

RouterModule.forRoot(yourRoutes, { useHash: true })

官方文档:

Angular2还有
#
,与一起使用,您似乎正在使用

如果使用PathLocationStrategy,请确保已将服务器配置为服务于请求的url响应

您可以在应用程序中使用HashLocationStrategy(#),如下所示:

@NgModule({
  imports: [
    BrowserModule,
    FormsModule,
    RouterModule.forRoot(routes, { useHash: true })  // ...<<<---here
  ],
  declarations: [
    AppComponent
  ],
  bootstrap: [ AppComponent ]
})
export class AppModule {
}
@NgModule({
进口:[
浏览器模块,
FormsModule,

RouterModule.forRoot(routes,{useHash:true})/…我们不能这样理解。你能在这里添加你的路由代码吗?你可以使用HTML5路由没有问题(如果搜索引擎优化是一个问题,你会想这样做)但你必须确保你为应用服务的任何东西都在处理所有子路由并将它们重定向到应用页面。因此,实际上这是一个服务器端路由问题,你应该问另一个与此相关的问题。如果我想使用PathLocationStrategy,有没有办法解决问题?然后确保服务器已配置需要配置服务器。例如,如果您使用的是.net mvc5,请确保mvc5路由能够提供足够的页面服务。