Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
有没有办法确定FormControl在angular中是否为只读_Angular - Fatal编程技术网

有没有办法确定FormControl在angular中是否为只读

有没有办法确定FormControl在angular中是否为只读,angular,Angular,我的angular应用程序中有一个表单控件 const name = new FormControl('vikram'); 还有我的模板 <input type="text" formControlName="name" name="name" id="name" [attr.readonly]="true"/> “我的组件”中是否有任何方法可以确定此控件是否为只读?尝试以下操作: html <input type="text" #nameCtrl formContro

我的angular应用程序中有一个表单控件

const name = new FormControl('vikram');
还有我的模板

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

“我的组件”中是否有任何方法可以确定此控件是否为只读?

尝试以下操作:

html

<input type="text" #nameCtrl formControlName="name" name="name" id="name" [attr.readonly]="true"/>
<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" />
...
更新

解决方法是在ts中添加一个变量,该变量包含每个控件的只读属性:

ts

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

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

<input type="text" #nameCtrl formControlName="name" name="name" id="name" [attr.readonly]="true"/>
<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" />
...
最后,检查每个表单控件的readOnly属性,如下所示:

{
  name : true,
  dob : false
}
readOnlyFlags['control_name']
您可以使用ViewChildren获取组件中的所有“formControls”

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

无论如何,对我来说是个奇怪的问题。通常您使用
[attr.readonly]=“variable”
,所以您只需要询问变量。您可以将表单中任何控件的值获取为
this.myform.get('nameOfFomControl').value
,如果禁用了控件,则需要使用
this.myform.getRawValue()值

只读:您想读取数据而不是编辑吗?我有
FormControl
的编号,我想从
not readonly FormControl
读取值,尝试查看
name
是否禁用了属性
。我想这就是你所需要的。看,目前你想在某些情况下将输入设置为只读,你可以在TS文件中检查相同的情况,并找出哪个是只读的formcontrols。我有一些form Controls,我无法完全做到这一点