0

我正在使用controlvalueaccessor我的反应式表单,其中我有一个文本框,该文本框禁用了我正在使用的一个文本框setdisabledstatefunction 。

现在我需要为那个文本框写一个点击事件,我卡在那个部分,不管它是否可能。请给我一些解决方案。
.html

    <label>{{label}}</label>
        <input type="text" class="form-control" 
        [value]="val"
        [disabled]="disabled"
        data-col-index="0"/>  

.ts

    import { Component, OnInit, forwardRef, Input } from '@angular/core';
    import { ControlValueAccessor, NG_VALUE_ACCESSOR, } from '@angular/forms';

    const CUSTOM_VALUE_ACCESSOR: any = {
      provide: NG_VALUE_ACCESSOR,
      useExisting: forwardRef(() => CDisplayComponent),
      multi: true,
    };

    @Component({
      selector: 'app-c-display',
      templateUrl: './c-display.component.html',
      styleUrls: ['./c-display.component.css'],
      providers: [CUSTOM_VALUE_ACCESSOR]
    })
    export class CDisplayComponent implements OnInit, ControlValueAccessor {

      @Input() label: String;
      @Input() value: String;
      val: String;
      private disabled: boolean = true;
      private onChange: Function;
      private onTouched: Function;

      constructor() {
        this.onChange = (_: any) => { };
        this.onTouched = () => { };
      }

      ngOnInit() {
      }
      writeValue(obj: any): void {
        this.val = obj;   
        if(this.value != undefined){
          this.val= this.value;
        }

      }

      registerOnChange(fn: any): void {
        this.onChange = fn;
      }

      registerOnTouched(fn: any): void {
        this.onTouched = fn;
      }

      setDisabledState(isDisabled: boolean): void {
      }
    }
4

3 回答 3

0

private disabled = false;     
isDisabled():boolean {
         return this.disabled;//should get updated control state changed dynamically
        }
setDisabledState(isDisabled: boolean): void {
 this.disabled = isDisabled;
      }
    <input type="text" class="form-control" [value]="val" [disabled]="isDisabled()" name="name" [(ngModel)]="name"/>  

于 2019-12-19T05:50:25.533 回答
0

试试这个

fileInputClick = (event) => {
   alert("sss")
    // Do what you want
  }
<div>
  <div>
    <input type="text">
  </div>
  <div (click)="fileInputClick($event)" >
    <input type="text" disabled="disabled">
  </div>
</div>

于 2019-12-19T05:52:05.083 回答
0

试试这个可以帮助你

 set isDisabled(value: boolean) {
     this._isDisabled = value;
     if(value) {
      this.form.controls['name'].disable();
     } else {
        this.form.controls['name'].enable();
      }
    }
<input type="text" class="form-control" [value]="val" [disabled]="isDisabled"' name="name" [(ngModel)]="name"/>  

于 2019-12-19T05:24:50.377 回答