根据 API 响应启用/禁用 Angular 表单中的按钮
Enable / Disable button in Angular Form based on API Response
我正在使用具有 Reactive 形式的 Angular8。最初我会禁用“提交”按钮,直到整个表单都填满了有效数据。
<div>
<form>
...........
</for>
<button [disabled]="(checkifSaveEnabled() && !formCreateNewPlan.valid)"
(click)="createNewPlan()">Save</button>
</div>
在 class (TS) 文件中:
checkifSaveEnabled() {
if (this.formCreateNewPlan.pristine || !this.formCreateNewPlan.valid) {
return true;
}
return false;
}
createNewPlan(): void {
this.submitted = true;
this.myservice.create(this.formCreateNewPlan.value).subscribe(result => {
if (result.success && result.data.planId > 0) {
...
}
}
这里一切正常。但是,我想禁用“提交时的按钮”(以避免多次点击),并在我的服务 (API) 响应出现任何错误时重新启用它。如何实现?
只需要在button的disabled属性中添加一个this.submitted
,见下面代码
<button [disabled]="submitted || (checkifSaveEnabled() && !formCreateNewPlan.valid)"
(click)="createNewPlan()">Save</button>
您可以使用 submitted
如果 API 正在进行,则为真,如果 API 解决或拒绝,则为假。
现在您可以使用 finalize 运算符在其中将 submitted
设置为 false。它会在 observable 的成功或错误块之后执行。
createNewPlan(): void {
this.submitted = true;
this.myservice.create(this.formCreateNewPlan.value)
.pipe(finalize(() => { this.submitted = false; }))
.subscribe(result => {
if (result.success && result.data.planId > 0) {
}
}, (error) => {
console.log(error)
});
模板中的相应更改
<button [disabled]="submitted || (checkifSaveEnabled() && !formCreateNewPlan.valid)"
(click)="createNewPlan()">Save</button>
我正在使用具有 Reactive 形式的 Angular8。最初我会禁用“提交”按钮,直到整个表单都填满了有效数据。
<div>
<form>
...........
</for>
<button [disabled]="(checkifSaveEnabled() && !formCreateNewPlan.valid)"
(click)="createNewPlan()">Save</button>
</div>
在 class (TS) 文件中:
checkifSaveEnabled() {
if (this.formCreateNewPlan.pristine || !this.formCreateNewPlan.valid) {
return true;
}
return false;
}
createNewPlan(): void {
this.submitted = true;
this.myservice.create(this.formCreateNewPlan.value).subscribe(result => {
if (result.success && result.data.planId > 0) {
...
}
}
这里一切正常。但是,我想禁用“提交时的按钮”(以避免多次点击),并在我的服务 (API) 响应出现任何错误时重新启用它。如何实现?
只需要在button的disabled属性中添加一个this.submitted
,见下面代码
<button [disabled]="submitted || (checkifSaveEnabled() && !formCreateNewPlan.valid)"
(click)="createNewPlan()">Save</button>
您可以使用 submitted
如果 API 正在进行,则为真,如果 API 解决或拒绝,则为假。
现在您可以使用 finalize 运算符在其中将 submitted
设置为 false。它会在 observable 的成功或错误块之后执行。
createNewPlan(): void {
this.submitted = true;
this.myservice.create(this.formCreateNewPlan.value)
.pipe(finalize(() => { this.submitted = false; }))
.subscribe(result => {
if (result.success && result.data.planId > 0) {
}
}, (error) => {
console.log(error)
});
模板中的相应更改
<button [disabled]="submitted || (checkifSaveEnabled() && !formCreateNewPlan.valid)"
(click)="createNewPlan()">Save</button>