我正在使用棱角2.1.1。我在我的应用程序中使用角度路由。它工作正常。当我点击菜单然后它正确路由。但问题是,当我在地址栏中键入URL而不是单击菜单时,我收到错误消息。
我认为问题是,当我输入一个URL并按Enter键时,浏览器会向服务器发送请求。但路由配置在客户端。所以服务器响应时出现错误信息。
在角度1中,URL中有一个#,限制浏览器将请求发送到服务器。但在角度2中,URL中没有#。
我可以配置服务器,以便每个URL都重定向到根URL。但那不是解决方案。我无法为任何网址添加书签。
我该如何解决问题?
答案 0 :(得分:1)
Angular2还有 #
,与 HashLocationStrategy 一起使用,您似乎正在使用 PathLocationStrategy < /强>
如果您使用PathLocationStrategy,请确保将服务器配置为提供请求的网址响应。
您可以在应用中使用 HashLocationStrategy(#),如下所示,
@NgModule({
imports: [
BrowserModule,
FormsModule,
RouterModule.forRoot(routes, { useHash: true }) // ...<<<---here
],
declarations: [
AppComponent
],
bootstrap: [ AppComponent ]
})
export class AppModule {
}
进一步阅读: - https://angular.io/docs/ts/latest/guide/router.html寻找 HashLocationStrategy
答案 1 :(得分:0)
您可以更改locationStrategy
。
默认设置为PathLocationStrategy
,但您也可以使用HashLocationStrategy
:
RouterModule.forRoot(yourRoutes, { useHash: true })
官方文档:https://angular.io/docs/ts/latest/guide/router.html#!#-hashlocationstrategy-