Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 更改值访问器初始化后没有NgControl的提供程序_Angular_Angular Forms_Form Control_Controlvalueaccessor - Fatal编程技术网

Angular 更改值访问器初始化后没有NgControl的提供程序

Angular 更改值访问器初始化后没有NgControl的提供程序,angular,angular-forms,form-control,controlvalueaccessor,Angular,Angular Forms,Form Control,Controlvalueaccessor,我已经创建了一个带有值访问器的自定义输入控件 这是我以前的代码 @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",
    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

如何在此实现中避免此错误?

是否已在AppModuleYes中导入
FormsModule
。与此无关。当我在没有ngModel或formControl的情况下使用此控件时,它会给我这个错误。如果NgControl是可选的,您可以使用
构造函数(@Optional()@Self()public controlDir:NgControl)
,但请记住每次要使用变量时都要选中
if(controlDir)
,我真的不知道如果没有[(ngModel)]或[formControl]或formControlName,如何显示值