1

如果我验证这样的 Angular Reactive 表单

this.formGroup = this._formBuilder.group({
  formControl: new FormControl(null, [Validators.required])
});

所以需要输入。

然后,如果我尝试使用输入空白提交,我会收到如下错误:

const { errors } = this.formGroup.get('formControl');
console.log(errors);

我收到以下输出

{required: true}

我的问题

我可以用另一种语言得到这个错误吗?

例如,我可以将其设置为法语并输出吗?

{obligatoires: vrai}

为什么

我正在尝试一种从验证错误中自动生成错误消息的方法。

我在这个 StackBlitz 中涂鸦,想知道我是否可以让它工作

https://stackblitz.com/edit/angular-validation-errors

4

4 回答 4

0

你不能。

实现这一点的正确方法是保留 Angular 输出并使用ngx-translate在 UI 中进行翻译,例如:

你得到了这样的东西:

<div>{{ 'required' | translate }}</div>
于 2019-07-25T11:16:33.247 回答
0

您可以创建一个自定义组件,<custom-error>而不是<mat-error>使用ng2-translatengx-translate来翻译错误消息。这就是我们在应用程序中所做的。

于 2019-07-25T11:17:25.923 回答
0

您可以像评论中建议的那样编写自定义验证器。您甚至可以查看验证器的源代码,然后根据需要对其进行修改。这是自定义的required验证器:

function isEmptyInputValue(value: any): boolean {
  return value == null || value.length === 0;
}

class ValidatorHelper {
 static required(control: AbstractControl): ValidationErrors | null {
    return isEmptyInputValue(control.value) ? { 'obligatoires' : 'vrai' } : null;
  }
}

然后在您的表单中使用它,例如:

selectFormControl: new FormControl(null, [ValidatorHelper.required])

演示:StackBlitz

PS。在这里,我们现在假设您只有一种语言,如果您有多种语言,这不是最好的解决方案。

于 2019-07-25T11:31:42.607 回答
0

前段时间面临同样的问题。我们开发了一个库来解决这个问题。

https://github.com/RiskChallenger/translation-validation

于 2021-07-13T19:27:49.840 回答