如何在angular-translate中传递参数

58

我创建了一个函数,用于进行一些错误检查,并将在不同的输入字段中使用。我的函数代码如下:

errorChecks = (element, minlength) => {
   if (element.$dirty) {
      if (element.$error.required == true) {
         this.errorMessage = "REQUIRED";
         return;
      } else if (element.$viewValue.length < minlength) {
          this.errorMessage = "MINLENGTH" // MINLENGTH error with parameters here
          return;
      } else {
          this.errorMessage = null;
          return;
      } 
   }
}

我在使用AngularJS翻译我的错误信息。

"MINLENGTH": "{{ element }} must be at least {{ value }} characters",

我想通过将参数传递到翻译中来动态更改我的错误消息,如下所示:

errorChecks(username, 5);

如果我只输入一个字符到用户名字段,错误会显示:用户名必须至少为5个字符

我正在尝试的行为是否可能?

5个回答

71

除非你想将elementminlength传递到模板中,否则最好在控制器中进行翻译。

首先,你需要在控制器中注入 $translate。 然后生成你的消息:

this.errorMessage = $translate('MINLENGTH', { element: element, value: minlength });

该方法也在此处进行了概述 here

要在模板中执行此操作(在此处进行了概述 here):

{{ MINLENGTH | translate : { element: element, value: minlength } }}

2
你提供的模板解决方案对我没有起作用。我不得不删除引号。 - JanMod
模板解决方案会导致错误,在去掉对象周围的引号后才能正常工作。 - spiritworld

19

如果有人想知道如何使用方法来获取翻译输入的语法,这是我用过的方法:

   {{ MINLENGTH | translate : { x: table.getShownCount(), y: table.getTotalCount() } }} 

10

您也可以在模板中像这样完成此操作。

<span data-translate="MINLENGTH" data-translate-values="{ element: element, value: minlength }"></span>

10

这对我来说运作良好:

{{'commisionMessage' | translate : {fee:fee} }}|

Json 文件

"commisionMessage": "BLA {{fee}} BLA BLA"

这个答案是由ChatGPT生成的。 - Offir

9
你可以使用$translate.instant('MINLENGTH', { element: element, value: minlength })。这个代码与最小长度有关。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接