如何禁用Angular 7中的按钮

时间:2019-04-23 06:29:39

标签: angular angular7 angular-reactive-forms angular-validation

我有一个Angular7 app并使用Reactive Forms Module进行验证和填写表格。

这是我的模板的样子。

<div class="row" [formGroup]="jobForm">
<div class="form-group"
 [ngClass]="{'has-error': jobForm.get('jobTitle').errors && 
  (jobForm.get('jobTitle').touched || jobForm.get('jobTitle').dirty)  }">
  <input type="text" class="form-control" formControlName="jobTitle" />
  <span class="help-block" *ngIf="formError">
  {{ formError.jobTitle }}
</span>
</div>
 <br />
 <button type="button" class="btn btn-primary" disabled="jobTitle.errors.required"
(click)="submit(jobTitle,jobDesc)">Create</button>

component.ts

import { Component, OnInit } from '@angular/core';
import { FormBuilder, Validators, FormGroup } from '@angular/forms';

@Component({
selector: 'app-create-job',
templateUrl: './create-job.component.html',
styleUrls: ['./create-job.component.css']
})
export class CreateJobComponent implements OnInit {
 constructor(private fb: FormBuilder) {}
 jobForm: FormGroup;
 formError: any;
 validationMessages = {
  jobTitle: { required: 'Job Title required'},
  jobCode: { required: 'Job Coderequired'},
  };

 ngOnInit() {
  this.jobForm = this.fb.group({
  jobTitle: ['', Validators.required]
});
this.formError = {
  jobTitle: '', jobCode : ''
};
this.jobForm.valueChanges.subscribe(data => {
  this.logValidationError(this.jobForm);
});

}

有2-3个输入元素已经过验证。

如果任何验证有错误,如何禁用提交。我不想像一处房产那样一一去往。

我的意思是,如果formError出现任何错误,请保持按钮禁用和最初禁用。

谢谢!

5 个答案:

答案 0 :(得分:1)

您需要检查表单是否为valid

<button type="submit" [disabled]="!jobForm.valid">Submit</button>

Angular Reactive Forms

答案 1 :(得分:1)

尝试以下代码:

<button type="button" class="btn btn-primary" [disabled]="jobForm.form.invalid"
(click)="submit(jobTitle,jobDesc)">Create</button>

答案 2 :(得分:1)

您需要使用三元运算符,因为残疾人接受 true null 才能正常工作

所以您可以尝试

<button 
   type="button" 
   class="btn btn-primary" 
   [disabled]="jobTitle.errors.required? true: null"
   (click)="submit(jobTitle,jobDesc)">
      Create
</button>

答案 3 :(得分:0)

您必须检查表单是否有效。

<form #f="ngForm" (ngSubmit)="onSubmit(f)" novalidate>
  <input required name="uri" [(ngModel)]="data">
  <button [disabled]="!f.valid">Submut</button>
</form>

答案 4 :(得分:0)

  

只需使按钮依赖于表单的有效性即可。

这将解决错误以及原始(初始)状况。

示例:

<button type="button" class="btn btn-primary" [disabled]="!jobForm.valid"
(click)="submit(jobTitle,jobDesc)">Create</button>