2016-08-23 12 views
0

我是一個新手angular2和koajs。也許這是一個愚蠢的問題。什麼是正確的方式來設置路由角2與koajs

我有如下的路由表的angular2應用:

const appRoutes: Routes = [ 
    { 
    path: 'pats/report/settings', 
    component: PatsReportSettingsComponent 
    }, 
    { 
    path: 'pats/report/:id', 
    component: PatsReportComponent, 
    pathMatch: 'full' 
    }, 
    { 
    path: 'pats/report/login', 
    component: PatsLoginComponent, 
    pathMatch: 'full' 
    }, 
    { 
    path: '.', 
    redirectTo: 'pats/report/login', 
    pathMatch: 'full' 
    },  
    { 
    path: '**', 
    component: Pats404PageComponent, 
    pathMatch: 'full' 
    }, 
]; 

如果用戶訪問我們通過根URL(http://localhost:3000)的應用程序,然後導航到一個子頁面(如:http://localhost:3000/pats/report/settings),一切都因爲angular2應用程序將在內部處理子頁面導航,並且不會向後端發出http請求。

但是,如果用戶直接訪問我們的應用程序的子頁面url,例如:http://localhost:3000/pats/report/settings,後端koajs應用程序將響應404狀態,因爲它不存在後端路徑「拍/報告/設置」的路線。

什麼是解決此問題的正確方法?

我應該爲後端路由器中的所有客戶端子頁面路徑添加路由並以index.html響應嗎?

回答

1

我不知道Koajs,但你需要一些中間件。你的後端需要將這些請求重定向到localhost:3000/,但讓URL保持原樣,這樣角度就可以達到它的魔力!

看到這個額外的軟件包koajs:

另一種選擇:使用Hashbang的URL! Angular2 URL-Styles

+0

感謝,我會檢查它 – ricky

+0

經過[Angular2 URL的樣式(https://angular.io/docs/ts/latest/guide/router.html#!#browser-url-styles)而且似乎不建議使用Hashbang-URL。 – ricky

+0

是的,只是想向你展示這個選項。最佳做法是通過您的koajs後端正確處理「未知的URL」。 – mxii

相關問題