Angular2 RC6禁用输入
之前在我的Angular2 RC5应用程序中,我有一个输入元素,如下所示:Angular2 RC6禁用输入,angular,Angular,之前在我的Angular2 RC5应用程序中,我有一个输入元素,如下所示: <input type="text" formControlName="blah" disabled/> 但是,如果我遵循此建议,删除禁用属性并将FormControl替换为设置为true的禁用属性,则该字段不会在提交时发布(即,它不会出现在form.value中) 我对这种情况的编码有误吗?是否有方法将禁用的FormControl包含在forms值中 作为旁注,我实际上使用的是FormBuilder,而不
<input type="text" formControlName="blah" disabled/>
但是,如果我遵循此建议,删除禁用属性并将FormControl替换为设置为true的禁用属性,则该字段不会在提交时发布(即,它不会出现在form.value中)
我对这种情况的编码有误吗?是否有方法将禁用的FormControl包含在forms值中
作为旁注,我实际上使用的是FormBuilder,而不是设置每个单独的FormControl,如果这会产生影响的话。您可以将“disabled”实例FormControl设置为“true”,而不是模板中的disabled属性
blah: FormControl = new FormControl({value: 'text', disabled: true});
或
你可以这样得到它 在模板中:
<[disabled]="state"/>
您可以尝试在输入中使用readonly属性:
我同意此代码。如果要禁用
this.userForm.controls['UserID'].disable({onlySelf:true})代码>
如果要启用
this.userForm.controls['UserID'].enable({onlySelf:false})代码>您需要使用getRawValue()
见:
如果希望包括所有值,而不考虑禁用状态,请使用此方法。否则,value属性是获取组值的最佳方法
从Angular 2.4.1开始使用正确答案,并像您一样使用FormBuilder
form: FormGroup;
constructor(private fb: FormBuilder) {
}
ngOnInit() {
this.form = this.fb.group({
blah: [{ value: '', disabled: true }]
});
你可以打电话打开它
this.form.get(“blah”).enable()代码>
或者打电话离开
this.form.get(“blah”).disable()代码>
但是,浏览器不应允许提交禁用的元素。这个流行的问题有更多关于这方面的信息
为了避免这种情况,人们想出了各种各样的方法和解决办法,例如隐藏输入字段、readonly
属性,或者在提交之前启用字段。这里有个窍门:this.form.getRawValue()代码>,无需更改您的型号
在您的组件中,通过在getRawValue
中使用获取值,它还将返回禁用控件的值
下面是我要测试的保存方法:
save() {
let data = this.form.getRawValue();
if (!this.form.valid)
return;
...................
...................
}
是的,我也处于同样的情况。仍然想知道他们是如何想到的,不允许用户自由编辑字段意味着根本不关心该字段。看看当我用instance FormControl禁用它时,这个字段在我的final/form对象中不可见(在html表单中可见)无法做到这一点,disabled只是一个getter。我选择了readonly路由,仍然带有绑定属性:
state:any = true;
form: FormGroup;
constructor(private fb: FormBuilder) {
}
ngOnInit() {
this.form = this.fb.group({
blah: [{ value: '', disabled: true }]
});
save() {
let data = this.form.getRawValue();
if (!this.form.valid)
return;
...................
...................
}