已禁用在angular 2中不将formControlName用于模型驱动表单?
我使用的是模型驱动的模板。如果复选框未选中,我想禁用输入。但它不适用于formControlName。 我试过三种方法。给我已禁用在angular 2中不将formControlName用于模型驱动表单?,angular,Angular,我使用的是模型驱动的模板。如果复选框未选中,我想禁用输入。但它不适用于formControlName。 我试过三种方法。给我 1.disabled="!filterForm.value.customer_limit" 2.[disabled]="!filterForm.value.customer_limit" 3.[readonly]="!filterForm.value.customer_limit" 这是我的HTML代码: <md-checkbox [checked]="f
1.disabled="!filterForm.value.customer_limit"
2.[disabled]="!filterForm.value.customer_limit"
3.[readonly]="!filterForm.value.customer_limit"
这是我的HTML代码:
<md-checkbox [checked]="filterForm.value.customer_limit" formControlName="customer_limit">
<md-input-container class="full-width">
<input mdInput
formControlName="customer_limit_input"
[disabled]="!filterForm.value.customer_limit"
placeholder="Limit to customers">
</md-input-container>
</md-checkbox>
你有什么想法请帮帮我。感谢您在组件中定义
布尔变量来保存输入状态:
disabled: boolean = true;
在模板中,您可以按以下方式切换它:
<md-checkbox [(ngModel)]="disabled">Toggle Input</md-checkbox>
<input mdInput [disabled]="disabled">
<md-checkbox [formControl]="checkbox">Toggle Input</md-checkbox>
<input mdInput [disabled]="disabled">
我从使用formControlName禁用的集合中获得了解决方案
form = new FormGroup({
'first': new FormControl({value: 'hello', disabled: false})
})
ngOnInit(): void {
this.filterForm.valueChanges.subscribe(
(formValue) => {
console.log(formValue)
}
);
}
对于反应式表单,[disabled]
或disabled
不起作用。您可以使用的是检查复选框是否选中,以及禁用或启用输入字段
首先,我删除了复选框中的输入字段,不知道为什么会放在那里
然后在构建表单时,我做了一个if语句来检查customer\u input
的值,如果输入字段为false,则禁用该字段:
如果此.myForm.get('customer\u limit')。值===true
this.myForm.get('customer\u limit\u input').enable()
如果虽然您最初知道客户限额的布尔值
,但您可以跳过上述内容,只需先禁用该字段(如果是这种情况),如Shailesh所建议:
customer\u limit\u输入:[{value:'something',disabled:true}]
我放置了一个更改事件来观察复选框的状态,并在发生更改时调用函数:
disableInput()
函数:
禁用输入(bool:boolean){
如果布尔===真
this.myForm.get('customer\u limit\u input').enable()
其他的
this.myForm.get('customer\u limit\u input').disable()
}
我不知道是否有一个更优雅的解决方案,但这是我迄今为止使用的
这是您的
formControlName=“customer\u limit”
,您正在以[disabled]=“!FiltPerform.value.customer\u limit”的身份访问。您正在使用另一个.value
,该值将在@Aravind@its not undefined时未定义。我查了一下,然后发生了什么事。创建一个plunker来重现问题。我使用模型驱动的方法。问题已禁用,无法使用formControlName@ShaileshLadumor你犯了什么错误?您的复选框是在表单中还是像模板显示的那样是单独的?非常欢迎!我认为对于这个禁用
-问题,没有比手动禁用和启用更好的解决方案了,因为没有手动禁用和启用可能有点奇怪。但是,除change
之外,还有其他选项可以查看更改,您可以使用另一个答案中提供的valueChanges
。我只是更喜欢使用change
,但这是我的偏好问题!:)祝你有愉快的一天和愉快的编码!:)实际上,在我的表单中有很多复选框,所以valueChanges方法给出了完整的表单数据,所以我需要选中所有复选框,然后启用输入。和change方法给出一个特定的复选框change事件,以便直接设置enable disable。这就是为什么在我的情况下,你的答案更好。谢谢。
form = new FormGroup({
'first': new FormControl({value: 'hello', disabled: false})
})
ngOnInit(): void {
this.filterForm.valueChanges.subscribe(
(formValue) => {
console.log(formValue)
}
);
}