【发布时间】:2020-02-02 20:09:13
【问题描述】:
我的问题是我有一个表单,当用户提交表单时,我想接收用户提交的数据。此数据应包装在单个对象中。我在 Angular 中使用 formBuilder,但似乎最有可能使用 formBuilder 从<input> 标签检索数据(引用this post: 中的顶级答案“formControlName 仅适用于输入、选择和文本区域。任何具有“价值”属性的东西。”
我在构造函数中定义了一个表单并初始化了字段,使用了 formBuilder;
component.ts
constructor(private formBuilder: FormBuilder,
) {
this.checkoutForm = this.formBuilder.group({
selectedAccount: '',
selectedContactInfo: '',
});
}
在我的 html 中,我有两个地方可供用户选择;一个下拉菜单和一系列复选框。我的构造函数中的selectedAccount 应用于<mat-select>,效果很好;在提交表格时,我可以看到我选择了哪个帐户。但是,我似乎无法将formControlName="selectedContactInfo" 应用于复选框区域中的div;它返回空字符串。
component.html
<!-- DROPDOWN - WORKS PERFECT -->
<mat-form-field>
<mat-label>CHOOSE ACCOUNT</mat-label>
<mat-select formControlName="selectedAccount">
<mat-option *ngFor="let account of accounts" [value]="account.name">{{account.name}}</mat-option>
</mat-select>
</mat-form-field>
<!-- CHECKBOXES - DOESN'T RETRIEVE DATA WHEN FORM IS SUBMITTED -->
h2 class="mat-h2">CHOOSE TELEPHONE NUMBERS WE CAN CONTACT YOU ON</h2>
<div formControlName="selectedContactInfo" class="item-container">
<mat-checkbox>{{contactInfo.privateMobile}}</mat-checkbox>
<mat-checkbox>{{contactInfo.workMobile}}</mat-checkbox>
</div>
从复选框中,我想检索实际数据。因此,如果第一个复选框已被选中,我想接收 contactInfo.privateMobile 包含的任何数据,可能是一个字符串或 8 位整数,并将其分配给构造函数中的 selectedContactInfo,就像我为 @ 所做的那样987654332@ 和下拉菜单。
我希望selectedContactInfo 包含复选框的数据;如果两者都被选中,则返回两者的手机号码。如果选中一个,它将返回该数字等。我还尝试在构造函数中使用selectedContactInfo: [],因为它需要返回所有复选框的数据,但现在只返回null。
提前致谢。
编辑:供参考(如果有人想知道这一点),这是我在提交表单时检查数据以查看其是否包含正确信息的方式。不知道是否相关:
onSubmit(userData) {
console.log(userData);
}
【问题讨论】:
-
请用一些示例数据创建一个StackBlitz 示例。
标签: angular forms typescript angular-material