javascript - 如何使用angular2一键禁用按钮
问题描述
我有一个发送按钮,其中包含 2 个 Api。因此,如果输入框为空,则发送按钮被禁用。现在我想让 1 个条件起作用,在提供电子邮件 ID 并单击保存按钮后,它必须在单击后被禁用。如果我在输入框上再次编辑,则必须启用它或必须处于禁用状态。
解决方案
如果您正在使用 响应式表单,请查看此stackblitz。
组件.ts
import { Component } from '@angular/core';
import { FormGroup, Validators, FormBuilder } from '@angular/forms';
@Component({
selector: 'my-app',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent {
public form: FormGroup;
public isThePreviousEmail: boolean;
private previousEmail: string;
constructor(private fb: FormBuilder) {
this.isThePreviousEmail = true;
this.buildForm();
this.form.valueChanges.subscribe((value) => {
if (this.previousEmail) {
this.isThePreviousEmail = value !== this.previousEmail;
}
});
}
public onSubmit(): void {
this.previousEmail = this.form.value.email;
this.isThePreviousEmail = false;
}
private buildForm(): void {
this.form = this.fb.group({
email: [null, Validators.compose([Validators.required, Validators.email])]
});
}
}
组件.html
<form [formGroup]="form" (submit)="onSubmit()">
Email: <input formControlName="email">
<button type="submit" [disabled]="form.get('email').invalid || !isThePreviousEmail">Submit</button>
</form>.
我正在使用响应式表单验证来禁用提交按钮。当用户编辑输入字段时,布尔变量变为假。
[disabled]="form.get('email').invalid || !isThePreviousEmail"
我正在订阅形成这样的价值变化。
this.form.valueChanges.subscribe((value) => {
if (this.previousEmail) {
this.isThePreviousEmail = value !== this.previousEmail;
}
});
在onSubmit
方法上,我将值设置为 previousEmail 并将其isThePreviousEmail
设为 false。
public onSubmit(): void {
this.previousEmail = this.form.value.email;
this.isThePreviousEmail = false;
}
这可能会帮助你采取一个想法。
推荐阅读
- java - 从日期和数据库中获取时间,然后在 java 中比较这些时间
- mysql - 将我现有的日期时间列更新为我在 mysql 中的相应时区
- javascript - 是否可以在 javascript 中删除 async/await 并使异步透明?
- javascript - 如何在javascript中停止事件捕获?
- node.js - VS Code 调试在 createScript 函数中的 vm.js 处停止
- php - 如何将 CSS 类分配给 WooCommerce 中的库存数量?
- javascript - 在画布中查找多边形的坐标
- wxpython - wxPython:在 wx.TextCtrl 中获取旧值和插入点
- php - php从表中选择有限数量的数据并按日期排序以进行延迟加载
- c# - C# 查找 ToolStripButtons