Мне нужно проверить каждый из элементов управления формы (input
, textarea
и т. Д.) В форме, чтобы узнать, к какому типу элементов они относятся. У меня огромное количество форм, и я хочу автоматизировать установку различных (по умолчанию) валидаторов для каждого типа элемента формы. Я не хочу перечислять все возможные formControlName где-нибудь, чтобы определить, к какому типу они относятся, поэтому подумал, что могу просто проверить HTML для этого вместо этого.
Моя мысль заключалась в том, чтобы получить их все с помощью некоторого селектора запросов, который возвращает все элементы с присутствующим formControlName, или я мог бы перебрать имена форм, которые должны присутствовать, и получить каждый элемент с помощью селектора запроса, который проверяет имена по атрибуту formControlName.
Итак, если у меня есть форма, которая выглядит так:
<form novalidate [formGroup]="formGroup">
<div class="row">
<div class="group-label">Street</div>
<input type="text" class="form-control" formControlName="street">
<div class="group-label">City</div>
<input type="text" class="form-control" formControlName="city">
<div class="group-label">State</div>
<input type="text" class="form-control" formControlName="state">
<div class="group-label">Some Description</div>
<div class="nested">
<textarea class="form-control" formControlName="description"></textarea>
</div>
</div>
</form>
И FormGroup, которая выглядит так:
this.formGroup = this.formBuilder.group({
street: [addr ? addr.street : ''],
city: [addr ? addr.city : ''],
state: [addr ? addr.state : ''],
description: [addr.description ? addr.description : ''],
});
Я бы подумал, что я смогу пройти через группу и найти элемент формы, соответствующий каждому из ключей, проверить его имя тега и установить валидаторы в зависимости от погоды, когда элемент является textarea
или input
.
Это очень упрощенный пример, потому что я автоматизирую создание formGroups в отдельном классе, но он должен прояснить суть.
Каков правильный способ сделать что-то подобное в Angular, если таковой имеется, и возникают ли проблемы с безопасностью из-за таких действий?
<input apply-validation type="text"/>
. Вам все равно придется добавлять это в HTML всякий раз, когда элемент нуждается в проверке. Вы также можете расширить это по-разному. - person sabithpocker   schedule 22.03.2018