Angular 角形+;自举';无效'';有效';
想象一下,我有一个小表单,并使用反应式方法 例如,我有两个输入Angular 角形+;自举';无效'';有效';,angular,bootstrap-4,Angular,Bootstrap 4,想象一下,我有一个小表单,并使用反应式方法 例如,我有两个输入 ... <input formControlName="name" name="name" type="text" class="form-control"> <input formControlName="amount" name="amount" type="text" class="form-control"> ... 有没有更好的办法。真正让我恼火的是html中有很多“泥” 所以,如果表单应该具有默
...
<input formControlName="name" name="name" type="text" class="form-control">
<input formControlName="amount" name="amount" type="text" class="form-control">
...
有没有更好的办法。真正让我恼火的是html中有很多“泥”
所以,如果表单应该具有默认样式,则表示页面已加载并
输入没有被触动
我发现我可以做到这一点,但仍然猜测有更好的方法。我说的“更好”是指不会让html变得如此肮脏
<input formControlName="name" name="name" type="text" class="form-control"
[ngClass]="{'is-invalid': name.invalid && name.touched,
'is-valid': name.valid, '': name.untouched}"
如果它是集中的,那么让边界看起来很好
input.ng-invalid.ng-touched:focus{
box-shadow: 0 0 0 0.2rem rgba(255,10,29,0.25) !important;
}
您不需要添加任何与表单控件状态更改相关的类。默认情况下,您只需要添加与这些类相关的样式
input.ng-invalid.ng-touched {
border: 1px solid red;
}
此类表示输入控件无效且已设置为toched,这意味着您只需处理样式。您可以在组件中使用通用方法:
isValid(字段:字符串){
return(!this._-form.get(field).valid&&this._-form.get(field).touch)?“无效”:this._-form.get(field).touch“有效”:“;
}
然后在元素引用中
[class]=“isValid('title')”
它非常简单
您只需在模板中正确设置[ngClass]
,并使用#和ngModel值命名字段表单(例如#myfieldname=“ngModel”
)。
如果使用引导,则可以使用是有效的
和是无效的类
,如下所示:
正如@Muhammed在上面所说的,我需要做的最好的方法就是通过css来做,在bootstrap 4中这只是我的一小部分贡献。问题是它添加了边框阴影,所以对我来说完整的解决方案是:对于无效的输入。ng无效。ng触摸{边框颜色:rgba(255,10,29,1)!重要;方框阴影:无!重要;}如果它聚焦,则使边框看起来很好输入。ng无效。ng触摸:聚焦{方框阴影:0 0.2rem rgba(255,10,29,0.25)!important;}这应该标记为最佳答案。事实上,这是这里唯一的好答案。
input.ng-invalid.ng-touched{
border-color: rgba(255,10,29,1) !important; box-shadow: none !important;
}
input.ng-invalid.ng-touched:focus{
box-shadow: 0 0 0 0.2rem rgba(255,10,29,0.25) !important;
}
input.ng-invalid.ng-touched {
border: 1px solid red;
}