禁用不工作

时间:2017-12-12 12:08:08

标签: angular typescript data-binding

  1. 不工作:
    • [disabled] = true
    • [disabled] = "isDisabled" ----- ts> (isDisabled = true)
    • 基本的html disabler也没有wokring ---- html> disable
    • [attr.disabled] = true
    • [attr.disabled] = "isDisabled" ----- ts> (isDisabled=true
  2. 我尝试为预览和更新制作相同的表单(预览应该禁用输入),但我在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中的所有输入都不起作用 捕获的是什么?

3 个答案:

答案 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()">