以角度2

时间:2016-12-08 06:11:57

标签: javascript angularjs angular routing url-routing

我正在使用棱角2.1.1。我在我的应用程序中使用角度路由。它工作正常。当我点击菜单然后它正确路由。但问题是,当我在地址栏中键入URL而不是单击菜单时,我收到错误消息。

我认为问题是,当我输入一个URL并按Enter键时,浏览器会向服务器发送请求。但路由配置在客户端。所以服务器响应时出现错误信息。

在角度1中,URL中有一个#,限制浏览器将请求发送到服务器。但在角度2中,URL中没有#。

我可以配置服务器,以便每个URL都重定向到根URL。但那不是解决方案。我无法为任何网址添加书签。

我该如何解决问题?

2 个答案:

答案 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-