首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >角度反应式验证

角度反应式验证
EN

Stack Overflow用户
提问于 2018-07-04 15:06:54
回答 1查看 323关注 0票数 0

我有一个有3个输入的表单,其中2个输入是必需的,第三个不是。

我的问题是,当我转到表单页面时,我看到不是必需的字段处于有效状态,并且已经用绿色着色,即使该字段没有脏或被触摸。

在我验证字段/表单之前,我可以做些什么来使输入灰显,或者它是这样设计的吗?

下面是我在组件中使用的代码:

代码语言:javascript
复制
export class SystemSettingsComponent implements OnInit {
form: FormGroup;

constructor(private formBuilder: FormBuilder) {
    this.form = new FormGroup({});
}

ngOnInit() {
    this.form = this.formBuilder.group({
        serviceName: ['', Validators.required],
        serviceDesc: [''],
        serviceId: [{value: SystemSettingsComponent.generateId(), disabled: true}, Validators.required]
    });
}

static generateId() {
    return Math.random().toString(36).substr(2, 9);
}}

和模板:

代码语言:javascript
复制
<form [formGroup]="form" novalidate>
<div class="row">
    <div class="col-lg-4">
        <mat-form-field>
            <input matInput placeholder="שם השירות" formControlName="serviceName"/>
        </mat-form-field>
        <mat-form-field>
            <textarea matInput placeholder="תיאור השירות" formControlName="serviceDesc"></textarea>
        </mat-form-field>
        <mat-form-field>
            <input matInput class="ltr text-align-left" placeholder="מזהה שירות" formControlName="serviceId"/>
        </mat-form-field>
    </div>
</div>
<div>
    <button mat-raised-button class="mat-raised-button mat-primary" matStepperNext>הבא</button>
</div>

EN

回答 1

Stack Overflow用户

发布于 2018-07-04 22:14:03

您可以监听窗体的状态更改,并相应地设置可选窗体控件的禁用状态。类似于:

代码语言:javascript
复制
ngOnInit() {
    this.form = this.formBuilder.group({
        serviceName: ['', Validators.required],
        serviceDesc: [{value: '', disabled: true}],
        serviceId: [{value: SystemSettingsComponent.generateId(), disabled: true}, Validators.required]
    });

    this.form.statusChanges.subscribe(status => {
        if (status === 'VALID' && this.form.controls.serviceDesc.disabled) {
            this.form.controls.serviceDesc.enable();
        } else if (status !== 'VALID' && this.form.controls.serviceDesc.enabled) {
            this.form.controls.serviceDesc.disable();
        }
    });
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51167708

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档