【发布时间】:2017-07-21 15:44:03
【问题描述】:
我的组件中的表单中重复出现以下代码:
<div class="form-group row">
<label class="col-sm-4 col-form-label" for="description">Description</label>
<input class="form-control form-control-lg"
id="description"
type="text" placeholder="..."
formControlName="description"
[ngClass]="{
'form-control-warning': descriptionCtrl.untouched && descriptionCtrl.invalid,
'form-control-success': descriptionCtrl.valid,
'form-control-danger': descriptionCtrl.touched && descriptionCtrl.invalid }">
</div>
... Another "blocks" with the same code
所以,为了简化这一点,我创建了以下方法:
handleClass = (control: AbstractControl): any => {
if (control.valid) {
return 'form-control-success';
} else {
if (control.touched) {
return 'form-control-danger';
} else {
return 'form-control-warning';
}
}
}
在模板中:
[ngClass]="handleClass(control)"
但这仍然不是我想要的,因为我需要在 所有 组件上创建此方法。我正在寻找一种动态执行此操作的通用方法。
PS:我项目中的所有输入都与上面的输入具有相同的规则。
实现此目的的最佳方法是什么?我希望我的问题足够清楚。
【问题讨论】:
-
了解指令,它是一种操作dom元素的强大方法。所以你基本上会得到dom元素并做任何你想做的事情。 (angular.io/docs/ts/latest/guide/attribute-directives.html)
标签: angular angular2-directives