Angular2 RC6禁用输入

Angular2 RC6禁用输入,angular,Angular,之前在我的Angular2 RC5应用程序中,我有一个输入元素,如下所示: <input type="text" formControlName="blah" disabled/> 但是,如果我遵循此建议,删除禁用属性并将FormControl替换为设置为true的禁用属性,则该字段不会在提交时发布(即,它不会出现在form.value中) 我对这种情况的编码有误吗?是否有方法将禁用的FormControl包含在forms值中 作为旁注,我实际上使用的是FormBuilder,而不

之前在我的Angular2 RC5应用程序中,我有一个输入元素,如下所示:

<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;
    ...................
    ...................
}