【发布时间】:2021-11-01 21:14:48
【问题描述】:
在 Angular 12 中,我正在项目中设计一个可重用的组件,但在设置验证器时出现以下错误
'(ValidatorFn | null | undefined)[]' 类型的参数不能分配给 'ValidatorFn | 类型的参数验证器Fn[] |空值'。 类型 '(ValidatorFn | null | undefined)[]' 不可分配给类型 'ValidatorFn[]'。 输入'ValidatorFn |空 | undefined' 不可分配给类型 'ValidatorFn'。 类型“未定义”不可分配给类型“ValidatorFn”。
import { Component, ElementRef, Input, OnInit, Self, ViewChild } from '@angular/core';
import { ControlValueAccessor, NgControl } from '@angular/forms';
@Component({
selector: 'app-text-input',
templateUrl: './text-input.component.html',
styleUrls: ['./text-input.component.css']
})
export class TextInputComponent implements OnInit, ControlValueAccessor {
@ViewChild('input', { static: true }) input!: ElementRef;
@Input() type = "text";
@Input() label!: string;
constructor(@Self() public controlDir: NgControl) {
this.controlDir.valueAccessor = this;
}
ngOnInit(): void {
const control = this.controlDir.control;
const validator = this.controlDir.validator ? [control?.validator] : [];
const asyncValidator = this.controlDir.asyncValidator ? [control?.asyncValidator] : [];
control?.setValidators(validator);
control?.setAsyncValidators(asyncValidator);
control?.updateValueAndValidity();
}
onChange(event: Event) {
}
onTouched() {
}
writeValue(obj: any): void {
this.input.nativeElement = obj || '';
}
registerOnChange(fn: any): void {
this.onChange = fn;
}
registerOnTouched(fn: any): void {
this.onTouched = fn;
}
}
提前感谢您的帮助。
【问题讨论】:
标签: angular