2016-11-29 34 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的」接口

相關問題