Angular 如何从应用程序路由模块中的cookie/service获取价值

Angular 如何从应用程序路由模块中的cookie/service获取价值,angular,Angular,我的网站www.domainname.com上有app-routing.module和这些路由: const routes: Routes = [ { path: "homepage/:lang/:country", ... }, ... { path: "**", redirectTo: "/homepage/en/gb", pathMatch: "full" }, ] 如果您通过www.domainname.com访问该页面,

我的网站www.domainname.com上有app-routing.module和这些路由:

const routes: Routes = [
  {
    path: "homepage/:lang/:country",
    ...
  },  
  ...
  {
    path: "**",
    redirectTo: "/homepage/en/gb",
    pathMatch: "full"
  },
]
如果您通过www.domainname.com访问该页面,您将被重定向到www.domainname.com/homepage/en/gb页面。我将在angular-l10n包中存储您对cookie和LocaleService的语言首选项

假设您将语言更改为zh cn,它将相应地存储在语言环境服务和cookie中

如果您下次访问www.domainname.com,我如何告诉应用程序路由模块使用cookie/locale服务中的lang/country值,而不重定向到默认的en/gb页面?

您可以使用设置cookie,比如cookie名称语言


在router.changes.subscribe事件上的应用程序组件上,您可以使用简单的cookie service get方法检查cookie,并使用router在cookie中的数据检查要重定向的路径。navigate()

,这样您就有了类似于路由的路径

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"
在这种方法中,您还将获得另一个好处,比如,如果您以后还需要根据需求检查其他一些事情,您可以在这里添加额外的逻辑


但如果我理解正确的话,您的必要性是,在用户选择一种语言后,从下次开始,您希望从下次开始打开该语言特定的页面。但您所遵循的过程是特定于浏览器的,希望您已经考虑过。

使用路由器保护获取cookie和重定向怎么样,不可能向模块中注入服务?