Javascript 单选按钮';s disabled属性在被动窗体内不起作用
单选按钮的disabled属性在被动窗体内不起作用,但当我将单选按钮置于被动窗体外时,它工作正常 我有一个条件,比如如果我的当前状态是已关闭,我应该允许用户在我已尝试使用单选按钮的Disabled属性的被动表单中编辑单选按钮,但没有成功 组件。tsJavascript 单选按钮';s disabled属性在被动窗体内不起作用,javascript,angular,angular-forms,Javascript,Angular,Angular Forms,单选按钮的disabled属性在被动窗体内不起作用,但当我将单选按钮置于被动窗体外时,它工作正常 我有一个条件,比如如果我的当前状态是已关闭,我应该允许用户在我已尝试使用单选按钮的Disabled属性的被动表单中编辑单选按钮,但没有成功 组件。ts conducttestlm:any={ isReadOnly:false } this.condutTestLM=this.formBuilder.group({ "testStatus":['',Validators.require
conducttestlm:any={
isReadOnly:false
}
this.condutTestLM=this.formBuilder.group({
"testStatus":['',Validators.required],
})
if(success.data.status=='CLOSED'){
this.conducttestlm.isReadOnly=true;
}
component.html
<form [formGroup]="condutTestLM">
<div class="row radio-top">
<div class="col-md-6 p-l-15">
<label class="radio-box">
<input formControlName="testStatus" name="testStatus" [(ngModel)]="conducttestlm.teststatus" [disabled]="conducttestlm.isReadOnly" value="Pass" type="radio">
<span class="checkmark"></span>
<span class="font-style">Pass</span>
</label>
</div>
<div class="col-md-6 p-l-15">
<label class="radio-box">
<input formControlName="testStatus" name="testStatus" [(ngModel)]="conducttestlm.teststatus" [disabled]="conducttestlm.isReadOnly" value="Fail" type="radio">
<span class="checkmark"></span>
<span class="font-style">Fail</span>
</label>
</div>
</div>
</form >
通过
失败
我需要禁用单选按钮一种可能是渲染时未检测到状态更改。首先:
// instead of using this:
[disabled]="conducttestlm.isReadOnly"
// Use the readonly attribute:
[readonly]="conducttestlm.isReadOnly"
接下来,使用手动检测任何更改:
// import it:
import { ChangeDetectorRef } from '@angular/core';
// and inject it into your contructor:
constructor(private ref: ChangeDetectorRef) {
...
}
// call it
if(success.data.status=='CLOSED'){
this.conducttestlm.isReadOnly=true;
this.ref.detectChanges();
}
应在运行时立即检测状态变化。如果没有,请尝试将您的conducttestlm.isReadOnly
值记录到控制台中,以确保它正在更改
如果要使用模板驱动属性,也可以使用
[attr.disabled]
在使用被动表单时,不要使用模板驱动的方法。您的代码如下所示:
<form [formGroup]="condutTestLM">
<div class="row radio-top">
<div class="col-md-6 p-l-15">
<label class="radio-box">
<input formControlName="testStatus" name="testStatus" [attr.disabled]="conducttestlm.isReadOnly ? true : null" value="Pass" type="radio">
<span class="checkmark"></span>
<span class="font-style">Pass</span>
</label>
</div>
<div class="col-md-6 p-l-15">
<label class="radio-box">
<input formControlName="testStatus" name="testStatus" [attr.disabled]="conducttestlm.isReadOnly ? true: null" value="Fail" type="radio">
<span class="checkmark"></span>
<span class="font-style">Fail</span>
</label>
</div>
</div>
</form>
通过
失败
请参见此处的示例:
您会注意到,我使用了attr.disabled
而不是disabled
来禁用单个单选按钮。
要了解attr.disabled
和disabled
之间的区别,您可以查看。在要点中,attr.disabled
是一个HTML属性,而disabled
是一个DOM属性。有些HTML属性的DOM属性不存在,如添加的链接所示
从
属性由HTML定义。属性由DOM(文档对象模型)定义
- 一些HTML属性具有与属性的1:1映射。id就是一个例子
- 某些HTML属性没有相应的属性。科尔斯潘就是一个例子
- 某些DOM属性没有相应的属性。textContent就是一个例子
- 许多HTML属性似乎映射到属性。。。但不是你想象的那样李>
对于输入框和禁用的
DOM属性,情况并非如此。确实有一个禁用的
DOM属性,但是在单选按钮上单独使用它时存在一些问题。看这个。我提供的解决方案更多的是一种解决方法,可以实现单选按钮的单独禁用。Plz使用ng-run.com发布一个示例。不要将模板驱动方法与反应式表单一起使用。如果您使用的是被动表单,那么不要使用ngModel
它工作正常,但是为什么我需要使用[attr.disabled]为什么不使用[disabled]。我找不到任何关于[attr.disabled]的文档。您能解释一下吗