2016-12-08 144 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