2017-01-24 6 views
0

У меня есть required в моем элементе ввода, и я хочу установить там сообщение об ошибке.Пользовательское обязательное сообщение об ошибке

это работает: oninvalid="this.setCustomValidity('custom error')"

Но я хочу, чтобы прочитать это сообщение об ошибке из ресурсов, который находится в json файле. Я использую i18n и ng2-translate, который отлично работает, если я сделаю: <span>{{'General.EmptySearch' | translate }}</span> отображает мое сообщение об ошибке.

так Если я сделаю это:

oninvalid="this.setCustomValidity('{{'General.EmptySearch' | translate }}')"

это говорит

Связывание свойства события 'oninvalid' отвергается по соображениям безопасности, пожалуйста, используйте (недействительных) = .. . Если «oninvalid» является директивным вводом, убедитесь, что директива импортирована текущим модулем.

ok Я изменю его. Я делаю что:

(invalid)="this.setCustomValidity('{{'General.EmptySearch' | translate }}')"

ошибка:

Got интерполяция ({{}}), где выражение ожидается в колонке 24 в [this.setCustomValidity ('{{' Общая .EmptySearch '| translate}}')]

Что случилось?

Вот моя форма:

INT .ts файл

searchval: FormGroup; 
ngOnInit() { 
     this.searchval = new FormGroup({ 
      Search: new FormControl('') 
     }); 
} 

и HTML

<form (ngSubmit)="onSubmit(searchval)" [formGroup]="searchval"> 
        <input type="text" class="form-control" required formControlName="Search" placeholder="{{ 'General.Search' | translate }}"> 
        <button type="submit"></button> 
</form> 
+0

Интересно. Перед тем, как прочитать ваш вопрос, я понятия не имел, что было [недопустимое событие DOM] (https://developer.mozilla.org/en-US/docs/Web/Events/invalid). Итак, вы смотрите «недействительное» событие и вы устанавливаете сообщение об ошибке, когда это событие происходит, правильно? Если это так, я никогда не видел, чтобы так делалось с Угловым. Ошибки обычно отображаются при просмотре свойства 'errors' поля. – AngularChef

+0

@AngularFrance да, я пытаюсь это сделать. Можете ли вы показать мне другой способ сделать это? Я не хочу отображать сообщение об ошибке пользователя по умолчанию. – gsiradze

+0

И вы используете шаблонные формы, правильно?(НЕ моделируемые формы) – AngularChef

ответ

0

ОК, так что вы используете модель управляемой формы синтаксиса .

Проверьте official doc on form validation. Он показывает, как правильно выполнить валидацию формы. Он также показывает, как иметь валидационные сообщения в вашем коде (и в вашем шаблоне), о чем вы говорили. После того, как ваши сообщения проверки будут в вашем коде, у вас не будет проблем с их переводом.

Замечание: Мне действительно интересно, почему вы хотели бы подтвердить свои поля, наблюдая за событием DOM (invalid). Я никогда не видел, чтобы это делалось именно так.

Смежные вопросы