2016-12-08 101 views
1

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

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

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

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

我该如何解决问题?

+2

我们能不能这样理解。你可以在这里添加路由代码吗? –

+0

您可以使用HTML5路由没有问题(并且如果SEO是一个问题,将会想要),但是您必须确保无论您用于为应用服务的是处理所有子路由并将它们重定向到应用页面。所以真的这是一个服务器端路由问题,你应该问另一个具体的问题。 – JayChase

回答

1

Angular2也有一个用来与HashLocationStrategy,似乎#你正在使用PathLocationStrategy

如果您使用PathLocationStrategy,请确保服务器配置为提供请求的url响应。

您可以使用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.htmlHashLocationStrategy

+0

如果我想使用PathLocationStrategy那么,有没有什么办法来解决问题? –

+0

然后确保服务器已配置为提供所需的页面。服务器需要配置。例如,如果您使用的是.net mvc5,请确保mvc5路由功能足以提供页面。 – micronyks