代码之家  ›  专栏  ›  技术社区  ›  Alexander Tarasenko

角度形式+引导“无效”,“有效”

  •  1
  • Alexander Tarasenko  · 技术社区  · 8 年前

    假设我有一个小的形式并使用反应式方法 例如,我有两个输入

    ...
    <input formControlName="name" name="name" type="text" class="form-control">
    <input formControlName="amount" name="amount" type="text" class="form-control">
    ...
    

    我要跟踪更改并添加引导程序类,对于适当的情况,“is valid”/“is invalid”。 问题是我唯一能做的就是:

    <input formControlName="name" name="name" type="text" class="form-control"
                     [ngClass]="name.invalid && name.touched ? 'is-invalid' : ''">
    

    在TS文件中:

    ngOnInit() {
        ...
        this.name = this.shoppingListForm.get('name');
      }
    

    有更好的方法吗?真正让我恼火的是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}"
    

    感谢您的帮助)

    正如@muhammed下面所说的,做我需要做的事情的最好方法是通过css

    只是我的一小部分贡献,以防引导4。

    问题是它添加了边框阴影,所以我的完整解决方案是: 对于无效输入

    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; 
    }
    
    1 回复  |  直到 8 年前
        1
  •  2
  •   Muhammed Albarmavi    8 年前

    您不需要添加任何与表单控件状态更改相关的类。默认情况下,您只需要添加与这些类相关的样式。

    input.ng-invalid.ng-touched {
        border: 1px solid red;
     }
    

    此类表示输入控件无效并被toched,这意味着您只需要处理样式。

    推荐文章