具有参数的自定义角度验证器仅运行一次

我有一个自定义验证器,其参数设置在上,FormGroup并且在初始化时运行一次,但未在任何控件更改上被触发。删除参数会在每次控件更改时运行验证器,但如果没有这些参数,显然无法使用。有什么建议让它在每个控件更改上运行?我已经尝试观察控件和使用它updateValueAndValidity(),但是仍然没有运气。

const customValidator = (options: { min: number, max: number }): ValidatorFn => {
  console.log(options);
  return (control: AbstractControl): { [key: string]: boolean } | null => {
    // logic returning null or { 'not-enough': true }
  }
}
    
this.form = new FormGroup({
  controlOne: new FormControl(null),
  controlTwo: new FormControl(null)
}, { validators: [customValidator({min: 5, max: 10})]});

找到解决方案

由于下面的注释和其他答案,我意识到控制台登录到验证器的返回功能仅运行一次。将它和其他任何附加逻辑移到return函数中,将按预期运行。最终,我的解决方案是将一些代码向下移动。

const customValidator = (options: { min: number, max: number }): ValidatorFn => {
  // No code up here will run on each control being validated
  return (control: AbstractControl): { [key: string]: boolean } | null => {
    // code down here will run on every control change
    // logic returning null or { 'not-enough': true }
  }
}
    
this.form = new FormGroup({
  controlOne: new FormControl(null),
  controlTwo: new FormControl(null)
}, { validators: [customValidator({min: 5, max: 10})]});
拉斐尔

您应该在控制台中出现错误,因为您没有在ValidatorFn以下内容中返回任何内容

src / app / app.component.ts(13,44)中的错误:错误TS2355:声明类型既不是'void'也不是'any'的函数必须返回一个值。

模板

  1. 确保将绑定FormGroup到表格
  2. 确保绑定每个 FormControl

<div style="text-align:center">
  <form [formGroup]="form">
      <input type="text" formControlName="controlOne">
      <input type="submit">
  </form>
</div>

模组

  1. 确保导入 ReactiveFormsModule

import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { ReactiveFormsModule } from '@angular/forms';

import { AppComponent } from './app.component';

@NgModule({
  declarations: [
    AppComponent
  ],
  imports: [
    BrowserModule,
    ReactiveFormsModule
  ],
  providers: [],
  bootstrap: [AppComponent]
})
export class AppModule { }

控制者

  1. 进口 FormControl, FormGroup, AbstractControl, ValidatorFn
  2. 从返回 ValidatorFn

import { Component } from '@angular/core';
import { FormControl, FormGroup, AbstractControl, ValidatorFn } from '@angular/forms';

@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})
export class AppComponent {
    customValidator = (options: { min: number, max: number }): ValidatorFn => {
        return (control: AbstractControl): { [key: string]: boolean } | null => {
            console.log(options.min, options.max);
            return {};//RETURN ERRORS HERE
        }
    }

    form = new FormGroup({
        controlOne: new FormControl(null)
    }, { validators: [this.customValidator({min: 5, max: 10})]});
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

CoreOS:在启动时仅运行一次自定义脚本

来自分类Dev

自定义DisplayFormatAttribute仅设置一次

来自分类Dev

角度/离子-控制器仅运行一次

来自分类Dev

自定义角度验证器-传递参数

来自分类Dev

具有多个参数的自定义验证属性

来自分类Dev

EditText验证仅运行一次

来自分类Dev

带有参数的Angular 2自定义验证器

来自分类Dev

具有相同修改的自定义控件验证器

来自分类Dev

jQuery验证自定义验证器,在元数据标签和消息中具有多个参数

来自分类Dev

具有自定义参数的样式触发器

来自分类Dev

仅单击页面上的多个按钮之一,即可运行ASP.Net自定义验证器

来自分类Dev

带参数的自定义验证器

来自分类Dev

自定义按钮在一次鼠标单击中运行 2 次单击事件

来自分类Dev

自定义django身份验证后端不会在第一次登录用户,但是会第二次运行

来自分类Dev

自定义视图仅重画一次,然后调用onDraw但屏幕未更新

来自分类Dev

在Vue.js单个文件组件中仅侦听一次自定义事件

来自分类Dev

我的自定义ThemeChangeEvent仅更改一次主题

来自分类Dev

Lightswitch HTML自定义控件仅显示一次

来自分类Dev

如何强制Robot Framework仅初始化一次我的自定义库

来自分类Dev

自定义选择器,一次可以选择两次

来自分类Dev

具有自定义参数的QAction

来自分类Dev

第一次在UpdatePanel中回发加载控件/验证器时,如何使用自定义ValidatorUpdateDisplay函数?

来自分类Dev

验证表单时,For循环仅运行一次

来自分类Dev

只需加载一次自定义词典。WPF拼写检查器

来自分类Dev

只需加载一次自定义词典。WPF拼写检查器

来自分类Dev

以角度反应形式使用自定义验证器

来自分类Dev

MSACCESS-如何通过条件一次自定义所有“总机”条目文本

来自分类Dev

一次仅选中一个复选框的自定义列表视图

来自分类Dev

一次调用自定义事件(游戏开发)

Related 相关文章

  1. 1

    CoreOS:在启动时仅运行一次自定义脚本

  2. 2

    自定义DisplayFormatAttribute仅设置一次

  3. 3

    角度/离子-控制器仅运行一次

  4. 4

    自定义角度验证器-传递参数

  5. 5

    具有多个参数的自定义验证属性

  6. 6

    EditText验证仅运行一次

  7. 7

    带有参数的Angular 2自定义验证器

  8. 8

    具有相同修改的自定义控件验证器

  9. 9

    jQuery验证自定义验证器,在元数据标签和消息中具有多个参数

  10. 10

    具有自定义参数的样式触发器

  11. 11

    仅单击页面上的多个按钮之一,即可运行ASP.Net自定义验证器

  12. 12

    带参数的自定义验证器

  13. 13

    自定义按钮在一次鼠标单击中运行 2 次单击事件

  14. 14

    自定义django身份验证后端不会在第一次登录用户,但是会第二次运行

  15. 15

    自定义视图仅重画一次,然后调用onDraw但屏幕未更新

  16. 16

    在Vue.js单个文件组件中仅侦听一次自定义事件

  17. 17

    我的自定义ThemeChangeEvent仅更改一次主题

  18. 18

    Lightswitch HTML自定义控件仅显示一次

  19. 19

    如何强制Robot Framework仅初始化一次我的自定义库

  20. 20

    自定义选择器,一次可以选择两次

  21. 21

    具有自定义参数的QAction

  22. 22

    第一次在UpdatePanel中回发加载控件/验证器时,如何使用自定义ValidatorUpdateDisplay函数?

  23. 23

    验证表单时,For循环仅运行一次

  24. 24

    只需加载一次自定义词典。WPF拼写检查器

  25. 25

    只需加载一次自定义词典。WPF拼写检查器

  26. 26

    以角度反应形式使用自定义验证器

  27. 27

    MSACCESS-如何通过条件一次自定义所有“总机”条目文本

  28. 28

    一次仅选中一个复选框的自定义列表视图

  29. 29

    一次调用自定义事件(游戏开发)

热门标签

归档