Я пытался ответить на чей-то вопрос. И при этом я понял, что в некоторых вещах в моем уме была некоторая неуверенность. Я надеюсь, что кто-нибудь сможет дать отзыв по пронумерованным пунктам 1–4:
Задача: Условно сделать поле ввода доступным только для чтения
Соответствующий раздел HTML:
<input type="text" placeholder="Club Name" #clubName>
Добавьте это в компонент Typescript.
// class properties
@ViewChild('clubName')
inp:HTMLInputElement; // Could also use interface Element
// conditionally set in some other methods of class
inp.setAttribute('readonly', 'readonly');
inp.removeAttribute('readonly');
Должен сказать, что для меня это серая зона.
- Ссылка на
HTMLInputElement
илиElement
напрямую с@ViewChild
в Angular 2+ - плохая практика? Только я часто видел примеры с использованиемElementRef
или переходом кnativeElement
отElementRef
.
Поскольку VS Studio не имеет для этого Intelli-sense, я внезапно чувствую, что кодирую в темноте. то есть вы никогда не получите отзывов о методах setAttribute или removeAttribute, их требованиях к параметрам и т. д. (я тоже знаю As to cast)
- Затем, посмотрев документацию, я подозреваю, что вы можете сделать это прямо на вводе в шаблоне HTML:
<input [attr.readonly]= "isReadOnly">
IIRC Я думаю, вам нужно сделать это с помощью свойства get в Typescript:
get isReadOnly() :boolean {
}
Этот способ действителен?
- Мне интересно, можете ли вы сделать синтаксис метода в шаблоне HTML:
<input [attr.readonly]= "isReadOnly()">
Машинопись
isReadOnly() :boolean {
}
Этот способ действителен?
4. Подводя итог, каков наилучший подход?
Обновление: существует также * ngIF, поэтому вы выводите один из двух входных элементов с тем же именем. Но для меня это звучит как кувалда, чтобы расколоть орех.
2 & 3
в отдельных случаях, в зависимости от того, что мне нужно вычислить для определения bool. - person Zze   schedule 21.07.2017