2016-11-29 6 views
15

У меня есть страница со многими входами, и я хочу сделать это readOnly ' Я считаю это решение: How to change HTML element readonly and required attribute in Angular2 Typescript?Как сделать readonly все входы в некоторых div в Angular2?

Но я не хочу делать это для каждого входа отдельно.

Как добавить свойство readOnly ко всем входам в одном div.

+0

Вы пытаетесь сделать это в динамических формах? – Sriram

+0

Пожалуйста, добавьте код, который демонстрирует, что вы пытаетесь выполнить, что вы пытались и где вы не смогли. –

ответ

33

Попробуйте в поле ввода:

[readonly]="true" 

Надежда, это будет работать.

+3

FWIW Это ничего не делает для ввода типа, например. 'Checkbox'. Для этого вы должны использовать '[disabled]'. – im1dermike

-1

Просто задайте свойство css контейнера div «указатели-события», так как нет i.e. 'pointer-events: none;'

+0

Это не сработает - вы все равно можете использовать клавишу табуляции, чтобы перейти к полям. –

+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

Все входы должны быть заменены пользовательской директивой, которая считывает одну глобальную переменную для переключения состояния readonly.

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

// component value 
childmessage = false; 
+1

Пожалуйста, добавьте описание к вашему ответу. С профессиональной точки зрения я могу предположить, что вы имеете в виду, что все входы должны быть заменены пользовательской директивой, которая считывает одну глобальную переменную для переключения состояния readonly. Но это может быть неправильно, и, конечно, это не очевидно для большинства читателей. –

0

Вы можете сделать это следующим образом. Открыть TS файл объявление есть сделать интерфейс с входами вы хотите, и на странице вы хотите показать при экспортном классе записи

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

и в шаблоне сделать так * ngFor = «пусть yourtype из yourinterface»