我有一个带app-routing.module和那些路线的有角网站www.domainname.com:
SELECT COUNT(data.Id)
FROM Data data
INNER JOIN
(SELECT UserId, MAX(Date) AS MaxDate
FROM Data
GROUP BY UserId) g
ON data.UserId = g.UserId
AND data.Date = g.MaxDate
如果您通过www.domainname.com访问该页面,您将被重定向到www.domainname.com/homepage/en/gb页面。我会将您的语言偏好设置存储在cookie和LocaleService中,并保存在angular-l10n软件包中。
假设您将语言更改为zh-cn,它将相应地存储在语言环境服务和cookie中。
如果您下次访问www.domainname.com,我如何告诉应用程序路由模块使用cookie / locale服务中的lang / country值,而不重定向到默认的en / gb页面?
答案 0 :(得分:1)
您可以使用ngx cookie service设置cookie,让我们说出cookie名称语言。
在router.changes.subscribe事件上的应用程序组件上,您可以使用简单的cookie服务get方法检查cookie,并使用router.navigate()使用cookie中的数据检查要重定向的路径
答案 1 :(得分:1)
所以你有类似的路线
const routes: Routes = [
{
path: "homepage/:lang/:country",
...
},
...
{
path: "**",
redirectTo: "/homepage/en/gb",
pathMatch: "full"
}
]
现在根据您的问题,我将做一个简单的更改来解决它。
{
path: "**",
redirectTo: "/index",
pathMatch: "full"
}
现在在索引页面中,我将为其编写代码;
Check localStorage if there is any language preference
If found
redirect to "homepage/:lang/:country"
else
redirect to "/homepage/en/gb"
通过这种方法,您还将获得另一个好处,例如,如果以后需要根据需要检查其他内容,可以在此处添加其他逻辑。
但是,如果我理解正确,那么您需要在用户选择一种语言之后,从下一次开始,您希望从下一次开始打开该语言特定页面。但是您要遵循的过程将特定于浏览器,希望您已经考虑过。