1. 禁用一个输入字段,在html 里直接写禁用属性,[ disabled ] = " disabled ", disabled值在指定情况下设置成true就可以了。如果是input框但是使用了form表单的formControlName属性,disabled属性是不起作用的。
2. 在表单验证的地方直接设置,name : [ { value: '', disabled: true }]。但是如果设定指定值,比如:
因为angular在渲染页面时会先调用初始化表单的方法,如果设置的disabled属性的值是调接口传来的,那可能会不起作用,因为表单已经初始化完成但是设置disabled为true的值还没传过来。有时候写在constructor里面不起作用在ngOnInit里面会起作用,也是需要具体情况具体分析的。
3. 获取表单字段设置其禁用,this.form.get( 'name').disable()。但是此方法要注意在后面表单再赋值时要使用this.form.getRawValue()方法。直接赋值的话,获取不到被禁用字段的值。如果是在特定值的时候禁用,加个判断就可以了。
this.daysForm.value取得是FormGroup(form)的value属性,返回一个对象;
this.daysForm.getRawValue()会遍历FormGroup(form)的controls属性,返回每一个FormControl中的value。