[disabled] = true
,[disabled] = "isDisabled"
----- ts> (isDisabled = true)disable
[attr.disabled] = true
,[attr.disabled] = "isDisabled"
----- ts> (isDisabled=true
)我尝试为预览和更新制作相同的表单(预览应该禁用输入),但我在html中的输入无法绑定到typescript boolean。 在html中,我有一个表,其中包含person.name,person.surname ....按钮(预览),按钮(更新),同时触发onSelect函数并发送person + true / false。
<input [(ngModel)]="osoba.ime" [attr.disabled]="isDisabled" name = "ime" type="text" id="ime">
和打字稿功能和属性
isDisabled = true;
onSelect(o: Osoba, isView) {
this.isDisabled = isView;
console.log(document.getElementById('ime'));
console.log(this.isDisabled);
this.selectedOsoba = o;
}
this.isDisabled的日志有效
但该元素的日志甚至没有禁用属性
<input _ngcontent-c5="" id="ime" name="ime" type="text" ng-reflect-name="ime" ng-reflect-model="Dusan " class="ng-untouched ng-pristine ng-valid">
这里是整个HTML代码
<form *ngIf="osoba">
<div class="input">
<label>Ime Osobe</label>
<input [disabled]= "isDisabled" [(ngModel)]="osoba.ime" name = "ime" type="text" id="ime">
</div>
<div class = "input">
<label >Prezime Osobe</label>
<input [(ngModel)]="osoba.prezime" name = "prezime" type="text" id = "prezime" [disabled] = "isDisabled">
</div>
<div >
<label >Jmbg Osobe </label>
<input [(ngModel)]="osoba.jmbg" name = "jmbg" type="text" [attr.disabled]= true >
</div>
<div class="input">
<input type="submit" value="izmeni" (click)="updateOsoba()">
</div>
</form>
<input id="disabledTest" type="text" value="nekiTekst" [disabled]= true>
表单外的输入正在工作,但表单和div中的所有输入都不起作用 捕获的是什么?
答案 0 :(得分:7)
使用attr.disabled
时,您必须提供文字值,或完全省略该属性。请记住,HTML中的disabled属性只是通过存在来禁用支持该属性的元素。
<input [(ngModel)]="osoba.ime" [attr.disabled]="disabled?'':null" name="ime" type="text" id="ime">
HTML中的以下两项都会导致输入被禁用...
<input disabled />
<input disabled="disabled" />
答案 1 :(得分:2)
在反应式表单创建中,您可以添加如下内容
this.form= this.formBuilder.group({
name: [{value: '', **disabled**: **true**}],
});
表单值将被取消
答案 2 :(得分:1)
使用此:
<input
type="radio"
id="primaryIPV6"
value="2"
[attr.disabled]="flagValue ? '' : null"
formControlName="p_ip_type"
(change)="optionalFn()">