【问题标题】:Angular 2/4: How do I make readonly work with my custom componentAngular 2/4:如何使只读组件与我的自定义组件一起工作
【发布时间】:2018-06-09 21:37:55
【问题描述】:

我有一个自定义组件,它有一个标签和一个输入框。我想让输入框只读。如何实现以下目标?

<custom-component [readonly]=true>

我的自定义组件模板如下

<div>
    <div><label>Hello</label></div>
    <div><input class="input input-lg" id="float-input" type="text" size="30" pInputText [(ngModel)]="value"
           (change)="onChange(value)" (keydown)="onChange(value)" (keyup)="onChange(value)"
           (keypress)="onChange(value)">
    </div>
</div>

【问题讨论】:

标签: angular angular2-forms angular2-directives


【解决方案1】:

在你的组件中定义一个输入变量:

@Input() readOnly: Boolean;

从你的父母调用中使用,就像你指出的那样:

<custom-component [readOnly]="true"></custom-component>

并使用此输入变量在表单中定义只读值:

<input class="input input-lg" 
  id="float-input" type="text" size="30" 
  pInputText [readonly]="readOnly"
  (change)="onChange(value)" (keydown)="onChange(value)" 
  (keyup)="onChange(value)" (keypress)="onChange(value)"/>

【讨论】:

    【解决方案2】:

    您不能直接将您的组件设置为只读。只需在您的组件中输入一个输入并在您的组件中使用它来只读输入

    <custom-component [readonlyComp]="true">
    

    在你的组件中输入一个输入

    @Input() readonlyComp: boolean;

    在组件模板中使用 readonlyComp。

    <div>
        <div><label>Hello</label></div>
        <div><input class="input input-lg" id="float-input" type="text" size="30" pInputText [(ngModel)]="value" [readonly]="readonlyComp"
               (change)="onChange(value)" (keydown)="onChange(value)" (keyup)="onChange(value)"
               (keypress)="onChange(value)">
        </div>
    </div>
    

    希望对你有帮助

    【讨论】:

      猜你喜欢
      • 2021-12-22
      • 2018-07-04
      • 2016-02-12
      • 2016-05-06
      • 2019-01-13
      • 2019-06-13
      • 2017-10-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多