使用(更改)时我无法提交值输入
I can't submit a value input when use (change)
在我的项目中,我想创建一张发票。在此发票中,我使用函数 get subtotal(){}
计算价值,完全可以正常工作。现在,如果我更改此小计,例如,我想将折扣从 100 减为 90。
我试过这段代码,但它不起作用。拜托,你能建议我如何解决这个问题吗?
Html代码:
<div class="input-field col s2" style="float: right;">
<input formControlName="Subtotal " id="Subtotal " [value]="subtotal " type="number" class="validate" (change)="updateForm($event)">
</div>
ts代码:
updateForm(event) {
console.log(event)
let amountpaidd = event.target.value
this.addsale['controls']['Subtotal '].setValue(amountpaidd );
}
onaddsale() {
let sale = this.addsale.value;
sale.Subtotal = this.subtotal;
let newSale = new Sale(sale);
console.log(newSale)}
get subtotal() {
return this.products
.map(p => p.p_Unit_price * p.p_Quantity)
.reduce((a, b) => a + b, 0);
}
谢谢!
更新:
this.addsale = this.formbuilder.group({
'Subtotal ': new FormControl('', Validators.required),
'products': this.formbuilder.array([]),
});
如果你需要有一个预先计算的值,那么只需设置控件的值。不要使用视图 (HTML) 来回传递值。
首先,使用表单生成器创建表单。
然后,使用 this.addSale.controls.Subtotal.setValue(this.subtotal)
设置小计的值。每当小计发生变化时执行此操作。
ngOnInit() {
this.service.productList.subscribe(productList => {
this.products = productList;
this.addsale.controls.Subtotal.setValue(this.subtotal)
});
}
不使用sale.Subtotal = this.subtotal
。
let sale = this.addsale.value
已经这样做了。
在您看来,使用基本的响应式表单绑定。
<input formControlName="Subtotal" id="Subtotal" type="number" class="validate">
只要您调用 setValue(this.subtotal)
,您的值就会更新
用户当然可以覆盖该值。但如果您添加更多产品,它可能会被覆盖。如果你想防止这种情况发生,你应该观察用户是否已经这样做了,并防止再用新的小计更新值。
Working demo 基于您在评论中提供的演示。
在我的项目中,我想创建一张发票。在此发票中,我使用函数 get subtotal(){}
计算价值,完全可以正常工作。现在,如果我更改此小计,例如,我想将折扣从 100 减为 90。
我试过这段代码,但它不起作用。拜托,你能建议我如何解决这个问题吗? Html代码:
<div class="input-field col s2" style="float: right;">
<input formControlName="Subtotal " id="Subtotal " [value]="subtotal " type="number" class="validate" (change)="updateForm($event)">
</div>
ts代码:
updateForm(event) {
console.log(event)
let amountpaidd = event.target.value
this.addsale['controls']['Subtotal '].setValue(amountpaidd );
}
onaddsale() {
let sale = this.addsale.value;
sale.Subtotal = this.subtotal;
let newSale = new Sale(sale);
console.log(newSale)}
get subtotal() {
return this.products
.map(p => p.p_Unit_price * p.p_Quantity)
.reduce((a, b) => a + b, 0);
}
谢谢!
更新:
this.addsale = this.formbuilder.group({
'Subtotal ': new FormControl('', Validators.required),
'products': this.formbuilder.array([]),
});
如果你需要有一个预先计算的值,那么只需设置控件的值。不要使用视图 (HTML) 来回传递值。
首先,使用表单生成器创建表单。
然后,使用 this.addSale.controls.Subtotal.setValue(this.subtotal)
设置小计的值。每当小计发生变化时执行此操作。
ngOnInit() {
this.service.productList.subscribe(productList => {
this.products = productList;
this.addsale.controls.Subtotal.setValue(this.subtotal)
});
}
不使用sale.Subtotal = this.subtotal
。
let sale = this.addsale.value
已经这样做了。
在您看来,使用基本的响应式表单绑定。
<input formControlName="Subtotal" id="Subtotal" type="number" class="validate">
只要您调用 setValue(this.subtotal)
用户当然可以覆盖该值。但如果您添加更多产品,它可能会被覆盖。如果你想防止这种情况发生,你应该观察用户是否已经这样做了,并防止再用新的小计更新值。
Working demo 基于您在评论中提供的演示。