Angular2模板驱动的表单:如何为自定义表单控件创建字段验证?

罗宾·迪克霍夫(Robin Dijkhof)

我想创建一个自定义表单控件来处理自身的任何错误。这意味着显示此组件内部的错误。我创建了一个实现的组件ControlValueAccessor我可以从这样的形式读取错误:form.controls.myfieldname.errors.aErrorName因此,我将其传递form.controls.myfieldname给constom控件。

有没有更好的方法来为自定义表单控件创建字段验证?

我的自定义控件:

@Component({
    selector: 'input-text2',
    templateUrl: './input-text2.component.html',
    styleUrls: ['/input-base2.scss', './input-text2.component.scss'],
    providers: [
        { provide: NG_VALUE_ACCESSOR, multi: true, useExisting: InputText2Component }
    ]
})
export class InputText2Component implements ControlValueAccessor {
    // The control field: form.controls.fieldname
    @Input() field;

    @Input() label: string;
    @Input() errorMessage: string;

    value: string;
    valueChange: (value: any) => void;
    _onTouched: (value: any) => void;


    writeValue(value: any): void {
        this.value = value;
        this.createClasses(this.size);
    }

    registerOnChange(fn: (value: any) => void): void {
        this.valueChange = fn;
    }

    registerOnTouched(fn: (value: any) => void): void {
        this._onTouched = fn;
    }

}

布局:

<div  *ngIf="field?.errors && field?.touched">
    invalid
</div>

形式:

<form novalidate #form="ngForm">
    <input-text2 [field]="form.controls.fieldname" name="fieldname" errorMessage="My error message" label="My label"  [(ngModel)]="model"
        custom-validator>
    </input-text2>
</form>
罗宾·迪克霍夫(Robin Dijkhof)

所以我找到了答案

我将此添加到我的控件中:

private ngControl: NgControl;

constructor(private injector: Injector) {

}

ngOnInit(): void {
    this.ngControl = this.injector.get(NgControl);
}

ngControl现在与我的field财产基本相同接下来,我可以将其field完全删除并替换为ngControl

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Angular 2自定义表单控件,以模板驱动方式具有多个输入

来自分类Dev

将参数传递给Angular 7模板驱动的表单自定义验证器

来自分类Dev

如何编写依赖于Angular2中当前组件的属性值的自定义表单验证器(由模型驱动)

来自分类Dev

Angular Reactive Forms:是否可以创建包含“必须具备”验证的自定义表单控件组件?

来自分类Dev

angular2 模板驱动的表单验证问题

来自分类Dev

如何为模板控件创建自定义属性

来自分类Dev

Angular 2模板驱动的表单,具有自定义输入

来自分类Dev

如何为表单创建自定义的“as_table()”方法?

来自分类Dev

如何使用jQuery创建自定义表单验证?

来自分类Dev

如何使用jQuery创建自定义的表单验证?

来自分类Dev

DevExtreme Angular2 表单的自定义标签

来自分类Dev

Angular 2 反应式表单自定义验证

来自分类Dev

如何应用自定义表单验证[Angular]

来自分类Dev

Angular 表单自定义验证数据

来自分类Dev

symfony 2创建自定义表单如何获取表单自定义元素?

来自分类Dev

用于自定义指令表单控件的AngularJS自定义表单验证器

来自分类Dev

具有模板驱动表单的自定义组件中的必填字段不会将表单标记为无效

来自分类Dev

Angular自定义表单验证器使用其他控件

来自分类Dev

如何为表单控件创建模板函数?

来自分类Dev

Angular Material:自定义表单字段控件 - 移动浮动标签(向下)

来自分类Dev

Angular Material 自定义表单字段控件的值未在调用 FormGroup 中更新

来自分类Dev

骨干表单-字段的自定义模板-不提交值

来自分类Dev

Angular2- 子组件中输入字段的模板驱动表单验证

来自分类Dev

Symfony + FOSRestBundle - 如何为使用自定义表单类型配置的字段允许 NULL 值?

来自分类Dev

Activiti表单字段上的自定义验证

来自分类Dev

ExtJS 4.2.1-表单自定义字段验证

来自分类Dev

联系表单自定义电子邮件字段验证

来自分类Dev

结构化Angular2表单-如何包括可验证的条件表单字段

来自分类Dev

如何使自定义表单控件可选地支持 Material?

Related 相关文章

  1. 1

    Angular 2自定义表单控件,以模板驱动方式具有多个输入

  2. 2

    将参数传递给Angular 7模板驱动的表单自定义验证器

  3. 3

    如何编写依赖于Angular2中当前组件的属性值的自定义表单验证器(由模型驱动)

  4. 4

    Angular Reactive Forms:是否可以创建包含“必须具备”验证的自定义表单控件组件?

  5. 5

    angular2 模板驱动的表单验证问题

  6. 6

    如何为模板控件创建自定义属性

  7. 7

    Angular 2模板驱动的表单,具有自定义输入

  8. 8

    如何为表单创建自定义的“as_table()”方法?

  9. 9

    如何使用jQuery创建自定义表单验证?

  10. 10

    如何使用jQuery创建自定义的表单验证?

  11. 11

    DevExtreme Angular2 表单的自定义标签

  12. 12

    Angular 2 反应式表单自定义验证

  13. 13

    如何应用自定义表单验证[Angular]

  14. 14

    Angular 表单自定义验证数据

  15. 15

    symfony 2创建自定义表单如何获取表单自定义元素?

  16. 16

    用于自定义指令表单控件的AngularJS自定义表单验证器

  17. 17

    具有模板驱动表单的自定义组件中的必填字段不会将表单标记为无效

  18. 18

    Angular自定义表单验证器使用其他控件

  19. 19

    如何为表单控件创建模板函数?

  20. 20

    Angular Material:自定义表单字段控件 - 移动浮动标签(向下)

  21. 21

    Angular Material 自定义表单字段控件的值未在调用 FormGroup 中更新

  22. 22

    骨干表单-字段的自定义模板-不提交值

  23. 23

    Angular2- 子组件中输入字段的模板驱动表单验证

  24. 24

    Symfony + FOSRestBundle - 如何为使用自定义表单类型配置的字段允许 NULL 值?

  25. 25

    Activiti表单字段上的自定义验证

  26. 26

    ExtJS 4.2.1-表单自定义字段验证

  27. 27

    联系表单自定义电子邮件字段验证

  28. 28

    结构化Angular2表单-如何包括可验证的条件表单字段

  29. 29

    如何使自定义表单控件可选地支持 Material?

热门标签

归档