以前在我的 Angular2 RC5 应用程序中,我有一个如下所示的输入元素:
<input type="text" formControlName="blah" disabled/>
目的是使用户在编辑模式下不可编辑该字段;因此禁用属性。
升级到 Angular2 RC6 后,我在控制台中收到以下消息:
看起来您正在将禁用属性与反应式表单指令一起使用。如果您在组件类中设置此控件时将disabled 设置为true,则disabled 属性实际上会在DOM 中为您设置。我们建议使用此方法来避免“检查后更改”错误。
例子:
form = new FormGroup({
first: new FormControl({value: 'Nancy', disabled: true}, Validators.required),
last: new FormControl('Drew', Validators.required)
});
但是,如果我遵循此建议,删除禁用属性并将 FormControl 替换为禁用设置为 true,则该字段does not提交后发布(即它不会出现在 form.value 中)。
我是否错误地编码了这种情况?有没有办法让禁用的 FormControl 包含在表单值中?
作为旁注,我实际上使用 FormBuilder,而不是设置每个单独的 FormControl(如果这会产生影响)。
从 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();
但是,浏览器不应允许提交禁用的元素。这个热门问题有更多相关信息禁用输入的值将不会被提交? https://stackoverflow.com/questions/1355728/values-of-disabled-inputs-will-not-be-submited
人们想出了各种技巧和解决方法来避免这种情况,例如隐藏的输入字段、readonly
属性,或在提交之前启用字段。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)