检测表单中所有输入字段的变化
Detect changes on all input fields in form
我正在使用 Reactive forms.It 有很多字段(输入、select 等)可以保存和打印 button.Here 我有一个场景,每当用户更改任何打印按钮的字段值应该是 disabled.Initially 打印按钮已启用 state.I 不知道如何处理整个表单 inputs.Can 谁能帮我解决这个问题。
<div class="tab-content">
<form [formGroup]="EditForm">
<div class="form-group">
<label for="title" class="control-label">
<span>TITLE</span>
</label>
<div>
<input type="text" size="27" formControlName="Title" pInputText>
</div>
</div>
<div class="form-group">
<label for="title" class="control-label">
<span>Department</span>
</label>
<div>
<input type="text" size="27" formControlName="Department" pInputText>
</div>
</div>
</form>
下面是component.ts
constructor(
private route: ActivatedRoute,
private formBuilder: FormBuilder,
){
this.EditForm= this.formBuilder.group({
Title: ['', Validators.required],
Department: ['']
});
在构造函数中添加以下代码。每当 EditForm 的任何控件中的值发生变化时,都会执行以下代码。
this.EditForm.valueChanges.subscribe(
(selectedValue) => {
// Disable the print button here
// Console.log(selectedValue);
}
);
valueChanges 是 AbstractControl 的一个 属性,每当控件值发生变化时都会发出一个事件,可用于 FormControl、FormArray 和 FormGroup。
它 returns 任何类型的 Observable。
您需要执行以下操作:
1) 像这样在你的组件中声明一个属性,基本上它会订阅表单值的变化
private valueChangeSub: Subscription;
2) 更新您的 ngOnInit 以包含以下 ngOnInit 中的行:
public ngOnint() {
this.valueChangeSub = this.EditForm.valueChanges.subscribe(
(values) => {
// Code to disable the button
});
}
然后在您的 ngOnDestroy 方法中您必须取消订阅:
public ngOnDestry() {
this.valueChangeSub.unsubscribe();
}
我们永远不要忘记退订任何订阅。
我们可以使用下面的代码:
脏:- 如果修改了某些控件则为真
<button type="submit" [disabled]="EditForm.dirty" (click)="exportPdf()">
<span >PRINT PAGE</span>
</button>
我正在使用 Reactive forms.It 有很多字段(输入、select 等)可以保存和打印 button.Here 我有一个场景,每当用户更改任何打印按钮的字段值应该是 disabled.Initially 打印按钮已启用 state.I 不知道如何处理整个表单 inputs.Can 谁能帮我解决这个问题。
<div class="tab-content">
<form [formGroup]="EditForm">
<div class="form-group">
<label for="title" class="control-label">
<span>TITLE</span>
</label>
<div>
<input type="text" size="27" formControlName="Title" pInputText>
</div>
</div>
<div class="form-group">
<label for="title" class="control-label">
<span>Department</span>
</label>
<div>
<input type="text" size="27" formControlName="Department" pInputText>
</div>
</div>
</form>
下面是component.ts
constructor(
private route: ActivatedRoute,
private formBuilder: FormBuilder,
){
this.EditForm= this.formBuilder.group({
Title: ['', Validators.required],
Department: ['']
});
在构造函数中添加以下代码。每当 EditForm 的任何控件中的值发生变化时,都会执行以下代码。
this.EditForm.valueChanges.subscribe(
(selectedValue) => {
// Disable the print button here
// Console.log(selectedValue);
}
);
valueChanges 是 AbstractControl 的一个 属性,每当控件值发生变化时都会发出一个事件,可用于 FormControl、FormArray 和 FormGroup。
它 returns 任何类型的 Observable。
您需要执行以下操作:
1) 像这样在你的组件中声明一个属性,基本上它会订阅表单值的变化
private valueChangeSub: Subscription;
2) 更新您的 ngOnInit 以包含以下 ngOnInit 中的行:
public ngOnint() {
this.valueChangeSub = this.EditForm.valueChanges.subscribe(
(values) => {
// Code to disable the button
});
}
然后在您的 ngOnDestroy 方法中您必须取消订阅:
public ngOnDestry() {
this.valueChangeSub.unsubscribe();
}
我们永远不要忘记退订任何订阅。
我们可以使用下面的代码:
脏:- 如果修改了某些控件则为真
<button type="submit" [disabled]="EditForm.dirty" (click)="exportPdf()">
<span >PRINT PAGE</span>
</button>