我创建了一个带有值访问器的自定义输入控件。
这是我之前的代码
@Component({
selector: "app--input",
templateUrl: "./app-input.component.html",
providers: [
{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => AppInputComponent), multi: true }
]
})
我想访问表单控件,所以我将逻辑更改为此。
@Component({
selector: "app--input",
templateUrl: "./app-input.component.html",
styleUrls: ["./app-input.component.scss"]
})
export class AppInputComponent implements ControlValueAccessor, OnChanges {
controlDirective: any;
constructor(@Self() public controlDir: NgControl) {
//this.checkValidation();
controlDir.valueAccessor = this;
}
ngOnInit() {
this.controlDirective = this.controlDir.control;
}
}
我的问题是我使用此输入仅在某些地方显示值并且不包含任何形式。所以我使用一个输入参数来设置这个输入的值。
我正在使用第一种方法。
但是在我将逻辑更改为上面之后,没有 ngModel 或 formControlName 它给了我下面的错误。
ERROR Error: Uncaught (in promise): Error: Template parse errors:
No provider for NgControl
如何通过此实现避免此错误?