2016-11-29 33 views
15

我有许多输入的页面,我希望把它“readOnly” 我觉得这个解决方案:How to change HTML element readonly and required attribute in Angular2 Typescript?如何在Angular2的某些div中只读取所有输入?

但我不想单独做每个输入。

如何将readOnly属性添加到某个div的所有输入中。

+0

你想在动态表单中做到这一点? – Sriram

+0

请添加演示您尝试完成的代码,尝试的内容以及失败的位置。 –

回答

33

试试这个在输入字段:

[readonly]="true" 

希望,这将工作。

+3

FWIW这不会输入任何类型的例如。 'checkbox'。你必须为此使用'[disabled]'。 – im1dermike

-1

只需将container div'pointer-events'的css属性设置为none,即'pointer-events:none;'

+0

这不起作用 - 你仍然可以使用tab键到达字段。 – 2017-03-22 14:08:16

+0

这不起作用,为了防止选项卡选择,在元素上设置tabindex =“ - 1”属性。 –

+0

@KaranvirKang tabindex = -1不支持可访问性 –

12

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

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

    <!-- fields go here --> 

</fieldset> 
8

如果使用反应性形式,还可以禁用整个形式或控制在FormGroup与myFormGroup.disable()任何子集。

+2

这样做将有效地防止提交代码获取FormGroup的值。 –

1

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

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

// component value 
childmessage = false; 
+1

请在您的回答中添加说明。从专业的角度来看,我可能猜测你的意思是所有的输入都应该用自定义指令替换,该指令读取一个全局变量来切换只读状态。但这可能是错误的,对于大多数读者来说当然并不明显。 –

0

你可以这样做。 打开TS文件的广告就在那里有你想要输入的页面,你要下的出口类写

readonly yourinterface = yourinterface 
readonly level: number[] = []; 

,并在您的模板做展示这样 * ngFor =“让yourtype yourinterface的”接口

相关问题