我在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后指定的任何路由?
答案 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 应用程序中 |
为此,您可以按如下方式创建路由器:
RouterModule.forRoot(APP_ROUTES, { useHash: true })
这个问题涉及同样的问题:Angular 4 routing --prod mode
相关问题: