请教一个问题?
来源:10-9 为自定义表单控件增加验证

simple8514650
2024-01-04
视频教程在自定义表单控件验证必填的验证时候,在添加首次一开始添加时候这个校验验证就生效了。怎么修改是在touch这个控件如果没有内容之后这必填的验证生效呢?
写回答
2回答
-
就是一个判断条件啊,判断是否dirty 然后给对应的css 属性
022024-01-04 -
接灰的电子产品
2024-01-04
import { Component, forwardRef } from '@angular/core'; import { ControlValueAccessor, NG_VALUE_ACCESSOR, NG_VALIDATORS, Validator, FormControl } from '@angular/forms'; @Component({ selector: 'app-uppercase-input', template: ` <input type="text" [(ngModel)]="value" (input)="onInput()" (blur)="onBlur()"> `, providers: [ { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => UppercaseInputComponent), multi: true, }, { provide: NG_VALIDATORS, useExisting: forwardRef(() => UppercaseInputComponent), multi: true, }, ], }) export class UppercaseInputComponent implements ControlValueAccessor, Validator { value: string = ''; touched: boolean = false; propagateChange = (_: any) => {}; validateFn: any; constructor() { this.validateFn = this.validate.bind(this); } // ControlValueAccessor implementation writeValue(value: any): void { if (value !== undefined) { this.value = value; } } registerOnChange(fn: any): void { this.propagateChange = fn; } registerOnTouched(fn: any): void { this.touched = false; } onInput() { this.value = this.value.toUpperCase(); this.propagateChange(this.value); } onBlur() { this.touched = true; this.validateFn(null); } // Validator implementation validate(control: FormControl) { if (this.touched && !this.value) { return { required: true }; } return null; // Validation passed } }
自己参考一下吧
00
相似问题