[英]Angular2 select form not capturing value
我正在使用 Angular 14 尝试创建一个 select 表单,从我的组件中的数组中读取选项。 select 选项已正确填充,但当我发送表单时,未发送选定的选项值。 它只是让它空着。 关于可能导致此问题的任何建议?
<mat-label>Perfil</mat-label>
<mat-select name="perfil">
<mat-option *ngFor="let perfil of perfis"
[value]="perfil.value">{{ perfil.title }}
</mat-option>
</mat-select>
在组件中,数组是:
perfis: {title: string, value: number }[] = [
{ "title": "Admin", "value": 1 },
{ "title": "Coordenador", "value": 2 },
{ "title": "Colaborador", "value": 3 },
];
内部表单组件的构造函数:
this.form = this.formBuilder.group({
id: [''],
login: [''],
password: [''],
nome: [''],
rg: [''],
cpf: [''],
telefone: [''],
email: [''],
ativo: [''],
perfil: ['']
});
提交表格:
onSubmit() {
console.log(this.form.value); // this is where I see the field is always empty
this.usersService.save(this.form.value)
.subscribe(
data => this.onSuccessInsertion('Informação inserida do banco de dados.'),
error => this.onError('Não foi possível salvar esta informação no banco de dados.')
);
}
也许我列出了选项,但在被选中后我没有捕捉到价值? 如果是这样,我应该怎么做? 我读到过您可以使用 [selected],但 Angular 甚至无法识别。
我注意到这可能是因为该值被捕获为字符串。 我在另一篇文章中读到 [value]="..." 仅支持字符串值,而 [ngValue]="..." 支持任何类型因此需要在 [ngValue]="perfil.value" HTML,但如果我 [ngValue] 而不是 [value],它会给我错误。 错误信息是:
无法绑定到“ngValue”,因为它不是“mat-option”的已知属性。
似乎 select 与FormGroup
中的控件无关。 因此,Angular 不知道 select 应该更改窗体中的perfil
控件。 假设您在模板的前面设置了FormGroup
,您可以使用formControlName
指令将 select 绑定到该控件,如下所示:
<mat-select name="perfil" [formControlName]="'perfil'">
<mat-option *ngFor="let perfil of perfis"
[value]="perfil.value">{{ perfil.title }}
</mat-option>
</mat-select>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.