【问题标题】:How to show pattern validation error when control looses focus - Angular 2当控制失去焦点时如何显示模式验证错误 - Angular 2
【发布时间】:2017-11-27 18:47:15
【问题描述】:

我使用 FormBuilder 方法制作了一个表单。现在我想添加一些模式验证。

我添加了验证,它工作正常。但验证错误显示在非预期时间。

我添加了一个textfield 并添加了一个pattern 验证。我想在另一个控件被选中或失去焦点时显示错误消息。 但目前,一旦我开始输入文本,就会显示验证错误。

我可以在失去焦点事件中显示错误消息吗?我知道我可以通过在TextControl 的onChange 事件中绑定一个方法来轻松做到这一点,但如果有另一种方法,我很想知道。

Here is the Plnkr

【问题讨论】:

    标签: angular validation angular2-forms formbuilder


    【解决方案1】:

    是的,您可以在特定的一个控件值更改上订阅值更改。

    举例 **

    第一种方法

     import...
        @Component({..})
        export class ExampleComponent implements OnInit {
    
             ngOnInit(): void {
                    this.formName.get('name')
                        .valueChanges
                        .filter((value: string) => value != null && value.length > 0) // use filter if needed otherwise remove it
                        .subscribe((value: string) => {
                             if (!value.match(/[-!$%^&*(/]/... set here your pettern)) {
                                      this.formName.controls.name.setErrors({});
                                 }
                        }
    
                }
            }
    

    第二种方法

    html

    <input type='text' (blur)="checkValidation()" formControlName="name">
    

    {{errorMessage}}

    组件中的方法

    import...
        @Component({..})
        export class ExampleComponent implements OnInit {
        errorMessage ='';
             ngOnInit(): void {
    
                }
    
          checkValidation(): void {
                if (!value.match(/[-!$%^&*(/]/... set here your pettern)) {
                    this.formName.controls.name.setErrors({});
                     this.errorMessage = 'set here your message';
                  }
            }
    

    【讨论】:

    • 是的,我知道这种方法。我对blur 事件感兴趣。当控件失去焦点时如何显示错误消息@Shalesh
    • 您的代码运行良好。我可以通过只使用 Plunker 中的类来做同样的事情吗?
    猜你喜欢
    • 2014-02-12
    • 2012-06-22
    • 1970-01-01
    • 1970-01-01
    • 2021-09-06
    • 2013-11-26
    • 1970-01-01
    • 2011-08-28
    • 1970-01-01
    相关资源
    最近更新 更多