primeNG p-checkbox无法找到具有未指定名称属性的控件

时间:2018-02-22 17:43:18

标签: angular primeng

我收到错误消息"找不到具有未指定名称属性的控件"当使用他们网站上指示的primeng时。 https://www.primefaces.org/primeng/#/checkbox

我的代码如下:

import { Component } from '@angular/core';
import { Validators, FormControl, FormGroup, FormBuilder } from '@angular/forms';

@Component({
    selector: 'primary-contact',
    templateUrl: './primary-contact.component.html',
    styleUrls: ['./primary-contact.component.scss']
})

export class PrimaryContactComponent {

constructor(private fb: FormBuilder) {}

primaryContactForm: FormGroup;

ngOnInit() {

    this.primaryContactForm = this.fb.group({
        'preferredCall': new FormControl(),
        'preferredText': new FormControl(),
        'preferredEmail': new FormControl()
    })
  }
}

模板是:

<span class="form-element">
    Notification Preferences
        <div class="group">
            <label>
                <p-checkbox label="Call" [formControl]="primaryContactForm.get['preferredCall']"></p-checkbox>
            </label>
            <label>
                <p-checkbox label="Text" [formControl]="primaryContactForm.get['preferredText']"></p-checkbox>
            </label>
            <label>
                <p-checkbox label="Email" [formControl]="primaryContactForm.get['preferredEmail']"></p-checkbox>
            </label>
        </div>
</span>

我尝试将name属性添加到三个p复选框中,包括唯一值和类似值,但它没有解决问题。

使用formControlName而不是[formControl]属性会清除错误,但根据primefaces网站,不建议在p-checkbox上使用。

1 个答案:

答案 0 :(得分:4)

看起来primeng文档不准确primaryContactForm.get['preferredCall']返回undefined,因此您获得的错误是正确的,没有找到该名称的表单控件。相反,您应该使用primaryContactForm.controls['preferredCall']

10月有人向他们指出了这一点,他们仍然没有更新他们的文档,因此您可能需要修复他们的文档并提交拉取请求。 https://github.com/primefaces/primeng/issues/2906#issuecomment-334457107

这是一个演示,显示从.get切换到.controls时表单的工作方式 https://stackblitz.com/edit/angular-1gs8ju?file=app%2Fapp.component.html