#angular #typescript
Вопрос:
Я пытаюсь просмотреть угловую книгу Адама Фримена, но многие примеры не работают, я полагаю, из-за новых изменений с тех пор, как она была написана.
Проблема, с которой я столкнулся, заключается в том, что следующий шаблон не работает из-за того, что машинописному тексту не нравится событие.цель
<input type="text" class="form-control" (input)="selectedProduct=$event.target.value">
Выбранный продукт объявлен в компоненте шаблона, как показано ниже (
export class ProductComponent {
selectedProduct: string = "";
}
Затем я попробовал это, приведя его в качестве элемента HTMLTextAreaElement, но затем он говорит, что, возможно, не определен
Я тоже пробовал с помощью !
Если бы кто-нибудь мог объяснить, как я заставляю это работать, это было бы здорово, так как это похоже на вырывание зубов, ура.
Ответ №1:
Используйте функцию приведения типа $any ().
Попробуйте это:
<input type="text" class="form-control" (input)="selectedProduct=$any($event).target.value">
Комментарии:
1. Спасибо, что это, по крайней мере, сработало, я очень признателен, следующая часть книги посвящена использованию [(ngModel)], что означает, что мне не нужно этого делать, но полезно, чтобы это работало, ура.
Ответ №2:
Эти проблемы касаются не углового, а машинописного текста. Эта функция вызывается strict null checks
, и вы можете отключить ее strictNullChecks
, указав значение false в tsconfig
файле.
Но лучший способ-использовать Optional chaining
(см. Это), который является средством доступа к свойствам по, возможно, нулевой или неопределенной ссылке.
Обратите внимание, что вам нужна версия машинописного текста 3.7 или более поздней версии для дополнительной цепочки:
<input type="text" class="form-control" (input)="selectedProduct=$event?.target?.value">
Комментарии:
1. Спасибо, я считаю, что я использую это 3.7, так как это то, что установлено на этом пути C:Program Файлы (x86)Microsoft SDKTypeScript3.7 но ? по — прежнему возникает проблема «Свойство «значение» не существует для типа «Событие».»