angular $translate.instant returns 对象而不是字符串

angular $translate.instant returns object instead of string

我正在使用 "angular-translate": "^2.15.1"$translateProvider.useSanitizeValueStrategy('sce')

在我的控制器中,我需要将翻译后的字符串值传递给 $http 服务。

但是下面的代码返回的是 TrustedValueHolderType 对象而不是字符串。

defaultMessage = translate.instant('welcome-message.default.message');

最低限度的 plunkr https://plnkr.co/edit/ZPtixjNub9kIExiuGIkp?p=preview 打开控制台(全部清除)。然后单击 DE 或 EN 按钮并查看日志

是的,如评论中所述,decodeURIComponent可能会解决它。但首先是造成这种情况的原因是:

$translateProvider.useSanitizeValueStrategy('sce')

这会在全局范围内对 $translate 的输出进行编码。这就是为什么您可以使用 decodeURIComponent.

来计算它的原因

也许您可以使用不同的策略。 angular-translate guide 似乎为此提出了 escape 策略。

这里有一个 forked plunker 可以使用 escape 策略,不需要使用 decodeURIComponent