angular - 更改值访问器初始化后没有 NgControl 提供程序
问题描述
我创建了一个带有值访问器的自定义输入控件。
这是我之前的代码
@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
如何通过此实现避免此错误?
解决方案
推荐阅读
- assembly - 汇编 - 存储比较的结果(如果为真,则为 0,如果为假,则为 0)?
- c - 闰年C项目
- python - 简化处理文件结尾
- flutter - Dart - Snackbar 服务 - 全局函数 vs 静态类函数 vs 单例
- c# - JsonConvert.DeserializeObject
- > 如果 ApiResponse 少于 2 个 JSON 对象,则获取异常
- linux - For循环不会重复自己
- android - Flutter Image_picker 在usb tethered但不在app store上运行时工作
- c# - Xamarin 表单刷新列表视图以多次点击一个项目
- java - 试图拦截 jdbcOperations 并使用字节伙伴返回固定值
- php - PHP 中的短 IF 和长 IF 变量赋值方法