我收到错误消息"找不到具有未指定名称属性的控件"当使用他们网站上指示的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上使用。
答案 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