繁体   English   中英

有什么方法可以找到 FormControl 是否在角度上是只读的

[英]Is There any way to find if a FormControl is readonly in angular

我的角度应用程序中有一个表单控件。

const name = new FormControl('vikram');

和我的模板

<input type="text" formControlName="name" name="name" id="name" [attr.readonly]="true"/>

我的组件中有什么方法可以查明此控件是否只读?

试试这个:

网页格式

<input type="text" #nameCtrl formControlName="name" name="name" id="name" [attr.readonly]="true"/>

TS

...
      @ViewChild('nameCtrl', {static : true}) nameCtrl : ElementRef ;

      ngAfterViewInit(){
        console.log(this.nameCtrl.nativeElement.getAttribute('readOnly')) ;
      }
...

更新

实现此目的的解决方法是在您的 ts 中添加一个变量,其中包含每个控件的 readOnly 属性:

TS

readOnlyFlags = {} ;

网页格式

<input type="text" [formControl]="name" name="name" id="name" [attr.readonly]="readOnlyFlags['name'] = true" />

<input type="text" [formControl]="dob" name="dob" id="dob" [attr.readonly]="readOnlyFlags['dob'] = false" />
...

结果,您的 readOnlyFlags 将如下所示:

{
  name : true,
  dob : false
}

最后,您检查每个表单控件的 readOnly 属性,如下所示:

readOnlyFlags['control_name']

您可以使用 ViewChildren 获取组件中的所有“formControls”

@ViewChildren(NgControl,{read:ElementRef}) controls:QueryList<ElementRef>

并特别按属性“名称”搜索一个,例如

  const control=this.controls.find(x=>x.nativeElement.getAttribute('name')=='name')
  return control?control.nativeElement.getAttribute('value'):null

无论如何,对我来说是一个奇怪的问题。 通常你使用[attr.readonly]="variable" ,所以你只需要询问变量。 您可以获得表单中任何控件的值,如this.myform.get('nameOfFomControl').value并且如果禁用控件并且您需要该值,请使用this.myform.getRawValue()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM