Угловой машинописный текст $событие.цель.значение

#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 но ? по — прежнему возникает проблема «Свойство «значение» не существует для типа «Событие».»