【发布时间】:2018-10-17 15:21:27
【问题描述】:
我有一个这样创建的 FormGroup:
form: FormGroup;
constructor(private _formBuilder: FormBuilder) { }
this.form = this._formBuilder.group({
name: ['', Validators.required],
email: ['', Validators.required, Validators.email]
});
当事件发生时,我想禁用这些输入,因此,在我添加的 HTML 中:
<input class="form-control" placeholder="Name" name="name" formControlName="name" [(ngModel)]="name" autocomplete="off" [disabled]="isDisabled" required>
<input class="form-control" placeholder="Email" name="email" formControlName="email" [(ngModel)]="email" email="true" autocomplete="off" [disabled]="isDisabled" required>
其中isDisabled 是一个变量,当所述事件发生时我切换到true。
正如你可以想象的那样,我收到了这样的信息:
您似乎正在使用带有反应形式的 disabled 属性 指示。如果将 disabled 设置为 true 当您在组件类中设置此控件时,disabled 属性实际上将在 DOM 中设置为 你。我们建议使用这种方法来避免“检查后更改”错误。
Example: form = new FormGroup({ first: new FormControl({value: 'Nancy', disabled: true}, Validators.required), last: new FormControl('Drew', Validators.required) });
因此,通过此警告显示的示例并稍作搜索,我发现我应该声明我的控件,例如:
name: [{ value: '', disabled: this.isDisabled }, Validators.required]
问题是:当变量在true/false之间变化时,它不会在禁用/启用之间切换
如果启用或禁用输入,使用变量控制的正确方法是什么?
我不想手动执行(例如:this.form.controls['name'].disable()),因为它似乎不是一种非常被动的方式,我必须在大量方法中调用它。可能不是一个好习惯。
谢谢
【问题讨论】:
-
我将 (change)="" 与 [(ngModel)] 结合使用就像一个魅力也检查 this 所以发布非常棒的恕我直言
-
顺便说一句,你的输入不需要
formControlName="name" [(ngModel)]="name"
标签: javascript html angular angular-forms