Как передать параметры в angular -трансляте
Я создал функцию, которая выполняет некоторые проверки ошибок и будет использоваться в разных полях ввода. Мой код функции ниже:
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);
Если я введу 1 символ в поле имени пользователя, ошибка скажет: username must be at least 5 characters
.
Я пытаюсь сделать то, что я пытаюсь сделать?
Ответы
Ответ 1
Вероятно, вам лучше всего перевести внутри контроллера на этот, если вы не хотите передавать element
и minlength
в шаблон.
Во-первых, вам нужно ввести $translate
в ваш контроллер. Затем для генерации вашего сообщения:
this.errorMessage = $translate('MINLENGTH', { element: element, value: minlength });
Этот метод также описан здесь.
Чтобы сделать это в шаблоне (обрисовано здесь):
{{ MINLENGTH | translate : '{ element: element, value: minlength }' }}
Ответ 2
Вы также можете сделать это в шаблоне следующим образом.
<span data-translate="MINLENGTH" data-translate-values="{ element: element, value: minlength }"></span>
Ответ 3
Вы также можете использовать $translate.instant('MINLENGTH', { element: element, value: minlength })
Ответ 4
Для всех, кто интересуется синтаксисом, для использования методов извлечения входных данных для перевода это сработало для меня:
{{ MINLENGTH | translate : { x: table.getShownCount(), y: table.getTotalCount() } }}