首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Angular2 RC6禁用输入

Angular2 RC6禁用输入
EN

Stack Overflow用户
提问于 2016-09-01 18:54:14
回答 7查看 14.4K关注 0票数 14

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

代码语言:javascript
复制
<input type="text" formControlName="blah" disabled/>

其目的是使用户在编辑模式下不可编辑此字段;因此,禁用了属性。

升级到Angular2 RC6之后,我将在控制台中获得以下消息:

看起来,您使用的是带有反应性表单指令的禁用属性。如果在组件类中设置此控件时,将禁用属性设置为true,则禁用属性实际上将在DOM中为您设置。我们建议使用这种方法来避免“检查后更改”错误。 示例: form = new FormGroup({ first: new FormControl({value:'Nancy',disabled: true},Validators.required),last: new FormControl('Drew',Validators.required) });

但是,如果我遵循这个建议,删除我的禁用属性并将我的FormControl替换为设置为true,那么该字段不会在提交时发布帖子(即它不会出现在form.value中)。

我把这种情况写错了吗?是否有一种将禁用的FormControl包含在窗体值中的方法?

顺便提一句,我实际上使用的是FormBuilder,而不是设置每个单独的FormControl,如果这有区别的话。

EN

回答 7

Stack Overflow用户

发布于 2017-01-11 20:07:38

正确的答案为角2.4.1,并像您一样使用FormBuilder

代码语言:javascript
复制
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属性,或者在提交之前启用字段。

票数 5
EN

Stack Overflow用户

发布于 2016-09-02 08:35:43

可以将“禁用”实例FormControl设置为“true”,而不是模板中的禁用属性。

代码语言:javascript
复制
blah: FormControl = new FormControl({value: 'text', disabled: true});

代码语言:javascript
复制
blah: FormControl = new FormControl('text');
blah.disabled = true;
票数 4
EN

Stack Overflow用户

发布于 2016-09-12 06:57:19

您可以尝试在输入中使用readonly属性:<input type="text" [readonly]="true" />

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39278932

复制
相关文章

相似问题

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