angular - 如何在角度中实现setdisabledstate文本框的点击事件
问题描述
我正在使用controlvalueaccessor
我的反应式表单,其中我有一个文本框,该文本框禁用了我正在使用的一个文本框setdisabledstate
function 。
现在我需要为那个文本框写一个点击事件,我卡在那个部分,不管它是否可能。请给我一些解决方案。
.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 {
}
}
解决方案
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"/>
推荐阅读
- haskell - 一起使用 Servant、Selda 和 SQLite
- javascript - Zendesk 应用程序错误和延迟/失败的 Webhook 发布
- escaping - 带反斜杠的用户名
- c# - 如何在 WPF 应用程序的配置中更改 SOAP 服务的 URL
- html - 如何使用 VBA 从部分标签中提取 URL?
- haskell - 在不设置 -Wunused-top-binds 的情况下,推荐使用模块私有记录类型的方法是什么?
- django - 如何使用 Django ORM 获取单个对象
- javascript - 将多个图像从服务器发送到 React 应用程序?
- c# - ProgressBar 值内的数据绑定不适用于 DataGridTemplateColumn
- android-studio - Gradle 同步失败:找不到参数 [com.google.android.gms:play-services-ads:18.2.0] 的方法 implementation()