【问题标题】:get key from translated value in ngx-translate从 ngx-translate 中的翻译值中获取密钥
【发布时间】:2019-05-19 11:11:53
【问题描述】:

我使用 @ngx-translate 和 localize-router。 无法从本地化 URL 解析有效的 slug 如果'about'的翻译是'asd'那么

   routerLink="about/{{'about' | localize}}" //href="about/asd"

但如果在路线上我有

   {path: ':slug', component...}

如果我从组件中的激活路由中得到一个蛞蝓 slug asd 不存在

我管理是因为我在数据库中也有所有翻译,所以如果它没有找到包含该 slug 的记录,它会从所有翻译中迭代,当它找到翻译后的值时,它会返回键并搜索新的 slug

有没有办法从 translateService 中的已翻译字符串中获取密钥,例如 get 或 Instant 方法?

【问题讨论】:

  • 在您解决问题之前,我有一个建议给您(我知道这不是您的问题),但我强烈建议您不要使用 localize-router 库。它有很多错误,而且从来没有稳定的版本。如果你想在你的项目中使用惰性模块或更复杂的结构,这个库不适合你。对您来说更好的是创建自己的组件来保持语言检测。
  • 谢谢,我已经得到并避免了其中一些错误,如果您知道另一个可以做到这一点并且更稳定的库,请告诉我,因为我需要这些行为。
  • 如果你在库更新中解决了这个问题,你可以从堆栈中删除这篇文章
  • 我避免了,我没有解决它,但是如果我没有得到答案可能没有办法做到这一点,所以我会尝试在 Github 上拉请求
  • 抱歉误会-我在其​​他工作中添加了此评论,并且我不够仔细...我添加了一个答案-也许对您有所帮助。

标签: angular ngx-translate


【解决方案1】:

一般我在几个项目中使用localize-router,每个项目都有类似的问题。但是 - 真正具有误导性的是 - 有时我在使用时会得到不同的行为: [routerLink]="" 超过 routerLink=""

你也可以试试这个选项:

        this.activatedRoute.root.url
            .subscribe(res => {
                const params = this.activatedRoute.snapshot.params;
            });

或者这个(这不完全是您需要的,但有时可以提供帮助):

        this.activatedRoute.root.url
            .subscribe(res => {
                const wholeUrl  = this.router.url;
            });

这也是快照的另一项服务:ActivatedRouteSnapshot,但它在我的上一个 Jasmine 单元测试项目中不起作用 - 这是模拟这个的问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-04
    • 2019-06-10
    • 1970-01-01
    • 1970-01-01
    • 2023-02-04
    • 1970-01-01
    相关资源
    最近更新 更多