Angular 角度反应形式禁用输入字段
我有一个反应形式的组件Angular 角度反应形式禁用输入字段,angular,Angular,我有一个反应形式的组件 form = this.fb.group({ fullname: this.fb.group({ name: '', lastName: '', }), income: this.fb.group({ preTax: '', annualIncome: { value: '', disabled: true }, }), job: '', realName: false,
form = this.fb.group({
fullname: this.fb.group({
name: '',
lastName: '',
}),
income: this.fb.group({
preTax: '',
annualIncome: { value: '', disabled: true },
}),
job: '',
realName: false,
});
虽然annualIncome字段已禁用,但我已绑定到一个返回数字的方法
<input
formControlName="annualIncome"
[value]="calculateAnnualIncome(form.value.income.preTax)"
type="text"
class="form-control">
虽然我在尝试检索时在字段中看到该值,但它返回“”
如何接收字段的实际值?在.ts中
ngOnInit() {
this.form.controls["income.annualIncome"].valueChanges.subscribe(value => {
console.log(value);
});
}
在Angular中,如果要获取包括禁用控件在内的所有值,应使用:
this.form.getRawValue();
或者以另一种方式使其只读,而不是禁用。通过这种方式,您可以按预期获得该控件的值。如果您不想使用Observable收听值更改,您可以使用patchValue()方法设置禁用字段的值,如下所示
calculateAnnualIncome(preTax){
let output = preTax * 14 * ((100 - 21) / 100);
this.income.patchValue({annualIncome:output});
console.log("Value from Input Filed",this.income.controls.annualIncome.value)
}
您可以使用
this.income.controls.annualIncome.value //output:13404.720000000001
或
我用另一种方式解决了您的问题,看看这个您是否尝试订阅字段值?像这样.form.get('income.annualIncome').valueChanges.subscribe(val=>{consonle.log(“income”,val);});
calculateAnnualIncome(preTax){
let output = preTax * 14 * ((100 - 21) / 100);
this.income.patchValue({annualIncome:output});
console.log("Value from Input Filed",this.income.controls.annualIncome.value)
}
this.income.controls.annualIncome.value //output:13404.720000000001
this.form.get('income.annualIncome').value