0

我是 angular2 和 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 状态,因为它不存在路径 'pats/report /设置'在后端。

解决这个问题的正确方法是什么?

我应该为后端路由器中的所有客户端子页面路径添加路由并使用 index.html 响应吗?

4

1 回答 1

1

我不知道 Koajs,但你需要一些中间件。您的后端需要将这些请求重定向到localhost:3000/但让 URL 保持原样,这样 Angular 就可以发挥它的魔力!

查看 koajs 的附加包:

另一种选择:使用 Hashbang-URLs ! Angular2 URL 样式

于 2016-08-23T08:43:02.397 回答