下面是我的Angular组件:

@Component( {
    selector: 'input-extra-field',
    template: `
            <div class="form-group" [formGroup]="formGroup" >
                <switch [attr.title]="field.etiquette" 
                    [attr.value]="field.valeur" [(ngModel)]="field.valeur"
                    [formControl]="fieldControl" [attr.id]="name" [attr.disabled]="disabled">
                </switch>
                <error-messages [control]="name"></error-messages>
            </div>
    `
} )

这是我的班级:

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)

当我改变元素开关输入它工作,知道我使用相同的结构到其他组件,它工作得很好。


当前回答

我还收到了这个错误,当我命名我的一个组件输入'formControl'。可能是留给别的东西用的。如果你想在组件之间传递FormControl对象,可以这样使用:

@Input() control: FormControl;

不是这样的:

@Input() formControl: FormControl;

奇怪-但有效:)

其他回答

我还收到了这个错误,当我命名我的一个组件输入'formControl'。可能是留给别的东西用的。如果你想在组件之间传递FormControl对象,可以这样使用:

@Input() control: FormControl;

不是这样的:

@Input() formControl: FormControl;

奇怪-但有效:)

我在mat-select中使用了一个formControl:

<mat-select [formControl]="control">
 ...
</mat-select>

我意识到MatSelectModule没有在规范文件中导入,这解决了这个问题。

在我的例子中,我在标签而不是输入中插入了[(ngModel)]。 还有一个警告,我尝试正确地运行上述错误在指定的行,但错误不会去。如果您在其他地方犯了相同的错误,它仍然会在同一行向您抛出相同的错误

我也有同样的误差,角7

 <button (click)="Addcity(city.name)" [(ngModel)]="city.name"  class="dropdown-item fontstyle"
     *ngFor="let city of Cities; let i = index">
      {{city.name}}
 </button>

我刚刚添加了ngDefaultControl

   <button (click)="Addcity(city.name)" [(ngModel)]="city.name"  ngDefaultControl class="dropdown-item fontstyle"
 *ngFor="let city of Cities; let i = index">
  {{city.name}}

#背景

NativeScript 6.0

在我的例子中,错误是由将元素标签从更改为by fault触发的。<TextView an [(ngModel)]="name"。被定义。

删除[(ngModel)]="name"错误消失。