如何在Angular2中的某些div中只读取所有输入?

Max*_*x K 40 readonly typescript angular2-forms angular

我有一个包含许多输入的页面,我想让它' readOnly'我找到这个解决方案:如何在Angular2 Typescript中更改HTML元素readonly和required属性?

但是我不想单独为每个输入做这件事.

如何readOnly在某个div中为所有输入添加属性.

Avn*_*kya 82

在输入字段中尝试此操作:

[readonly]="true"
Run Code Online (Sandbox Code Playgroud)

希望,这会奏效.

  • FWIW这对类型的输入没有任何作用,例如.`checkbox`.你必须使用`[disabled]`. (8认同)
  • 使用“disable”时,输入不会发出事件,但使用“readyonly”时,其行为类似于禁用,但会发出事件,我使用它是因为在组件修改值,我喜欢在前模板中使用消息来控制它,为此我使用了它,另一个如何实现这一目标?在输入中,我有一个用于所有 html5 验证的本地变量,并将该变量传递给自定义函数以启用或禁用提交按钮 (2认同)

小智 20

如果您想要整个组,而不是一次只有一个字段,则可以使用HTML5 <fieldset>标记.

<fieldset [disabled]="killfields ? 'disabled' : null">

    <!-- fields go here -->

</fieldset>
Run Code Online (Sandbox Code Playgroud)

  • 这适用于除 IE11 之外的所有浏览器,如果您必须支持它,请小心 (2认同)

sno*_*ort 13

如果使用反应式表单,您还可以禁用FormGroup中的整个表单或任何控件子集myFormGroup.disable().

  • 这样做会有效地阻止提交代码获取FormGroup的值. (2认同)

Ahm*_*ssy 6

如果要立即禁用Angular形式的所有输入,请执行以下操作:

1-反应形式:

myFormGroup.disable() // where myFormGroup is a FormGroup 
Run Code Online (Sandbox Code Playgroud)

2-模板驱动的表单(NgForm):

您应该在NgForm变量(例如,名为myNgForm)中获取NgForm,然后

myNgForm.form.disable() // where form here is an attribute of NgForm 
                      // & of type FormGroup so it accepts the disable() function
Run Code Online (Sandbox Code Playgroud)

如果是NgForm,请注意在正确的时间调用disable方法

为了确定何时调用它,您可以在此Stackoverflow答案中找到更多详细信息


小智 5

所有输入都应替换为自定义指令,该指令读取单个全局变量以切换只读状态。

// template
<your-input [readonly]="!childmessage"></your-input>

// component value
childmessage = false;
Run Code Online (Sandbox Code Playgroud)