angular - 使用 Angular 10 处理反应形式
问题描述
我正在使用具有反应形式的 angular 10 开发应用程序。我的场景是我有父表单,我在其中使用带有记录列表的表单数组。我面临的问题是当我控制台记录 this.parentForm 然后它完美地加载表单数组值但是当我使用 this.parentForm.value 然后它将表单数组中的值从 1600 更改为 160。这是图像和我正在研究的表单构建器方法。我面临的唯一问题是总重量。
FormBuilder(){
this.shippingParentForm = this.builder.group({
requestTypeId: [ShippingRequest.boxescrates, [Validators.required],],
shippingTypeId: [this.startupval, [Validators.required]],
estimatedDate: [null, [Validators.required]],
isCustomBrokerage: [false, [Validators.required]],
isCustomBond: [false, [Validators.required]],
isHazardous: [false],
isShipper: [false],
isPersonalShipment: [false],
shippingdetails : this.builder.array([
this.ValidatePalletShippingForm()
]),
totalshippingdetails : this.builder.array([
this.ValidateTotalShipmentForm()
]),
pickupPoint : this.builder.group(
{
locationTypeId: [0, [Validators.required, Validators.min(this.startupval)]],
countryName: [null, [Validators.required]],
addressDetails: [null, [Validators.required]]
}
),
dropPoint : this.builder.group(
{
locationTypeId: [0, [Validators.required, Validators.min(this.startupval)]],
countryName: [null, [Validators.required]],
addressDetails: [null, [Validators.required]]
}
)
});
this.formValueChange();
}
ValidatePalletShippingForm() : FormGroup{
return this.builder.group({
packageTypeId: [this.startupval],
unit: [null, [Validators.required , Validators.min(this.startupval)]],
length: [null, [Validators.required]],
width: [null, [Validators.required]],
height: [null, [Validators.required]],
weight: [null, [Validators.required]],
dimension: [0],
weightunit: ['KG'],
dimensionunit: ['CM'],
totalcubicmeter: [null],
totalweight: [null]
});
}
let model = this.shippingParentForm.value;
解决方案
不可能知道发生了什么。问题是你改变了价值。在哪里?
顺便提一句。没有必要为“totalWeigth”创建一个 FormControl,你总是可以在你的 .html 中写一些像
{{(+shippingParentForm.get('shippingdetails.'+i+'.weight').value)*
(+shippingParentForm.get('shippingdetails.'+i+'.unit').value)}}
其中“i”是 formArray 的索引
或者
{{(+shippingParentForm.get(['shippingdetails', i, 'weight']).value) *
(+shippingParentForm.get(['shippingdetails', i, 'unit']).value)}}
推荐阅读
- html - 在固定位置 div 内,绝对元素不超出 div
- python - 在 Pandas 中展平多嵌套 JSON 并导出为 CSV
- puppet - 出现错误:此命令不再起作用,请改用 `puppetserver ca`
- visual-studio - TF10201 源代码管理无法使用 tf.exe 启动手动合并工具
- c++ - 使用深度优先搜索找到树的直径的问题
- reactjs - 如果未指定路由,则重定向到 html 页面
- php - 如何使用 PHP switch 语句获取值?
- c# - 将 .NET Framework 升级到 4.6.1 并获取套接字异常
- python - WSGIServer TypeError: __call__() 接受 3 个位置参数,但给出了 4 个
- php - 与 symfony 3.4 的多对多关系(使用 api 在两个表之间创建链接)