首页 > 解决方案 > 更改值访问器初始化后没有 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

如何通过此实现避免此错误?

标签: angularangular-formsform-controlcontrolvalueaccessor

解决方案


推荐阅读