web-dev-qa-db-ja.com

Angular 2. Chromeのエラー:名前属性が指定されていないコントロールが見つかりません

これは plunker コンソールエラーなしでFirefoxで機能しますが、Chromeでメッセージが表示されます。

Formcontrolのエラー

<ul>
  <li *ngFor="let item of data">
    <label>
      <input type="radio" name="radio1"
        [value]="item.id"
        [formControl]="childControl"
        (input)="fn($event.target.value)" >
      <p>{{ item.title }}</p>
    </label>
  </li>
</ul>

指定されていない名前属性を持つコントロールが見つかりません

9
MikeS

[formControl]="childControl" MyChildテンプレートで指定されたMyChildクラスで指定されたFormControlが必要です。

export class MyChild  implements ControlValueAccessor {
  @Input() data: any;
  out: any;
  childControl = new FormControl();

  fn: (value:any) => void;

  validateFn: any = () => {};

  constructor(private _renderer: Renderer, private _elementRef: ElementRef) {}

  writeValue(value: any): void {
    this._renderer.setElementProperty(this._elementRef, 'checked', value == this._elementRef.nativeElement.value);
  }
  registerOnChange(fn: (value: any) => void) {
    this.onChange = fn;
  }
  registerOnTouched() {}

}

ただし、その後は無関係と思われるエラーが発生しますTypeError: v is not a function

5
Syed Jafri

入力タグにはformControlNameプロパティを使用する必要があると思います。

0
Ahmed Alstaty