Angular 2,路由在应用程序中路由的URL路径

时间:2017-06-09 03:03:50

标签: angular

我在S3上托管了Angular 2应用。路由文件如下所示。

const APP_ROUTES: Routes = [
  { path: 'checkout', component: CheckoutComponent },
  { path: 'thankyou', component: ThankyouComponent },
  { path: 'lander', component: LanderComponent },
  { path: '', component: LanderComponent }
];

如果用户输入www.example.com/checkout,我希望将其带到应用上的checkout路线。我想它会这样做,但是S3给了我错误No Such Key。有没有办法在Angular 2中执行此操作,还是我需要在S3中设置?我认为问题是S3进入example.com存储桶然后期望文件夹checkout。我怎么能不这样做,只是应用程序以及URL后指定的任何路由?

3 个答案:

答案 0 :(得分:0)

RouterModule.forRoot(APP_ROUTES, { useHash: true })

答案 1 :(得分:0)

RouterModule.forRoot(APP_ROUTES)

{useHash:true}是一个选项。添加时,URL使用Hashes。 没有它,没有哈希。

答案 2 :(得分:0)

角度路由策略

使用 RouterModule.forRoot 将路由 APP_ROUTES 添加到路由器:

forRoot(routes: Routes, config?: ExtraOptions)

并通过 useHash: true 将配置作为 ExtraOptions 传递:

<块引用>

如果为 true,则启用使用 URL 片段而不是历史 API 的位置策略。

下表比较了不同的效果:

<头>
useHash 使用的路由策略 例如路由为 例如预期效果
false PathLocationStrategy(没有散列) /checkout 将直接转到 S3 存储桶和密钥 checkout
true HashLocationStrategy(带有哈希符号) #/checkout 会留在你的 Angular 应用程序中

绕过S3的角度路由

为此,您可以按如下方式创建路由器:

RouterModule.forRoot(APP_ROUTES, { useHash: true })

这个问题涉及同样的问题:Angular 4 routing --prod mode

另见

相关问题: