Я настраиваю проверку формы в пользовательском интерфейсе для одного из наших проектов.Одно из текстовых полей должно иметь различную проверку pattern
, основанную на выборе предыдущего раскрывающегося списка.Например, если раскрывающийся список имеет значение name
, шаблон должен быть:
pattern='[a-zA-Z ]+'
, где, как если бы он был number
, он должен быть:
pattern='[0-9 ]+`
I 'Мы установили функцию в компоненте, чтобы установить строку проверки на основе этого выбора:
fields: string[] = [];
validationPattern: string;
private validationType(field: string[]) {
if (field.includes('number')) {
this.validationPattern = '[0-9]+';
return this.validationPattern;
} else if (field.includes('name')) {
this.validationPattern = '[a-zA-Z1-9][a-zA-Z0-9 ]+';
return this.validationPattern;
}
}
И в HTML у меня есть следующее.setField - это функция, которая фактически выбирает поле;validationType - это то, что я пытаюсь использовать для создания шаблона проверки для ввода:
<div ngbDropdownMenu>
<button
*ngFor="let selected of fields"
class="dropdown-item"
(click)="setField(selected); validationType(selected)">
{{ selected }}
</button>
</div>
А вот вход, на котором выполняется проверка формы:
<input
type="text"
id="value"
name="value"
placeholder="Value"
#value1="ngModel"
pattern=this.validationPattern
[(ngModel)]="profile.value">
У меня есть двапроблемы на данный момент:
Как правильно передать значение переменной validationPattern или выходные данные функции validationType () в шаблон во входных данных?На данный момент, кажется, что this.validationPattern
читается как фактический шаблон, то есть слова this.validationPattern
, а не связанное значение.Независимо от того, выберу я имя или номер, все, что я ввожу, будет неверным.
Как я могу использовать validationType () вне клика?Мне сказали, что это очень плохая практика - иметь более одной функции, связанной с (щелчком), и в этом конкретном случае она должна быть зарезервирована для setField ().