#angular
#angular
Вопрос:
Я создаю свою собственную проверку для определенного FormControl, но я не могу понять, как сделать ссылку на внешнее значение, определенное вне моей функции проверки.
код:
@Component({
selector: 'city-autocomplete',
template: `
<label for="incidade">Cidade/Comarca:</label>
<input type="text" class="autocomplete-imput" id="incidade"
[formControl]=inputcidade
>
`,
styleUrls: ['./city-autocomplete.component.scss']
})
export class CityAutocompleteComponent {
extenalValue :boolean = false
inputcity = new FormControl('', [this.cityValidator]);
//My Validator:
cityValidator(ctrl: AbstractControl) {
const isValid = this.extenalValue // <== this is UNDEFINED
return isValid ? null : {
cityValidator: {
valid: false
}
}
}
}
HTML:
ОШИБКА:
Это показывает, что extenalValue не определено.
Как я мог видеть, абстрактный элемент управления выполняется ПЕРЕД @Component, поэтому я не могу определить что-либо вне функции проверки.
МОЙ ВОПРОС:
Как я должен ссылаться на значения вне этой функции?
Спасибо.
Ответ №1:
Привязка ссылки к классу компонента исчезает при использовании ссылки на функцию.
Существуют различные способы исправить это, одним из вариантов является:
inputcity = new FormControl('', [this.cityValidator.bind(this)]);
Небольшое замечание. Что функция проверки делает внутри компонента?
Комментарии:
1. Спасибо, я постараюсь это сделать. Я сделал эту функцию проверки внутри компонента, потому что это будет всего 2 или 3 строки кода, и она будет использоваться только здесь. Я подумал, что не стоит создавать в моем приложении еще один файл с новой директивой / функцией экспорта и вставлять это в бочки (index.ts) и модуль только потому, что это.