这是我的Angular组件:
@Component( {
selector: 'input-extra-field',
template: `
`
} )
这是我的类:
export class SwitchExtraField extends ExtraField {
@Input() field: ExtraFormField;
@Input() entity: { fields: Object };
@Input() formGroup: FormGroup;
constructor( formDir: NgForm ) {
super( null, null, formDir );
}
get disabled(): string {
if ( this.field && !!this.field.saisissable && !this.field.saisissable ) {
return 'disabled';
}
return null;
}
}
这是我在编译时得到的错误:
ERROR Error: No value accessor for form control with unspecified name attribute
at _throwError (forms.es5.js:1918)
at setUpControl (forms.es5.js:1828)
at FormControlDirective.webpackJsonp.../../../forms/@angular/forms.es5.js.FormControlDirective.ngOnChanges (forms.es5.js:4617)
当我将元素开关更改为输入时,它会正常工作,因为我知道我对其他组件使用了相同的结构,并且它工作得很好。
发布于 2017-12-13 22:22:05
我通过添加
属性添加到包含
属性。
发布于 2019-01-18 02:48:50
我也遇到了同样的问题,问题是我的子组件有一个
命名
..。
所以我只需要改变一下:
至:
ts:
@Input()
control:FormControl;
发布于 2019-02-19 05:31:41
当我在Angular 7中编写自定义表单控件组件时,我也收到了这个错误。然而,没有一个答案适用于Angular 7。
在我的示例中,需要将以下内容添加到
装饰者:
providers: [
{
provide: NG_VALUE_ACCESSOR,
useExisting: forwardRef(() => MyCustomComponent), // replace name as appropriate
multi: true
}
]
这是一个“我不知道它为什么有效,但它确实有效”的案例。将其归因于Angular部分糟糕的设计/实现。
https://stackoverflow.com/questions/46422007
复制相似问题