Угловой. Понимание @Input, @Output И Eventemitter

Привет, Хабр! Представляю вашему вниманию перевод статьи «Понимание @Input, @Output и EventEmitter в Angular» автор: Foolishneo. Приветствую всех, кто хочет накопить информацию о тонкостях фреймворка Angular. Сегодня я посчитал необходимым лучше изучить информацию, касающуюся организации взаимодействия между компонентами Angular, и начать практиковаться в переводах интересующих меня статей с английского.

Надеюсь, найдутся те, для кого перевод статьи с Середина будет полезно.

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

Вашему вниманию, господа.

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

В этой статье я постараюсь объяснить их максимально простым способом.



Инструмент обмена данными

Прежде всего задача декораторов Вход И Выход состоит из обмена данными между компонентами.

Они представляют собой механизм получения/отправки данных от одного компонента к другому.

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

Выход отправляет данные, раскрывая их как производителей событий, обычно как объекты класса EventEmitter. Итак, когда вы видите такой код:

  
  
  
  
  
  
   

@Component({ selector: 'todo-item', .

}) export class TodoItemComponent { @Input() item @Output() onChange = new EventEmitter() }

это значит:
  • Эth, я жду отправленных мне данных.

    Я получу их и сохраню как стоимость недвижимости.

    элемент.

  • Кстати, я вызову отправку данных с помощью свойства по изменению.

Давайте представим, что у вас есть компонент Список дел , который содержит компонент TodoItem .

В шаблоне компонента ТодоЛис Вы ожидаете увидеть:

.

<todo-item [item]="myTask" (onChange)="handleChange($event)" </todo-item> .



Что значит:

  • Компонент Список дел помещает значение данных в принадлежащее ему свойство мое задание и передает его компоненту TodoItem
  • Данные, передаваемые из компонента TodoItem , будет получен и обработан функцией дескрипторИзменить() компонент Список дел
Хватит теории.

Давайте посмотрим на пример.



@Ввод и

Выход В бою.

обрати внимание на пример.

Здесь я создал 2 компонента, компонент привет , вложенный в компонент приложение .

Компонент привет В нем есть Вход И Выход :

hello.component.ts @Component({ selector: 'hello', template: ` <h3 (click)="onClick.emit('Neo')"> .

</h3> ` }) export class HelloComponent { @Input() myFriend: string @Output() onClick = new EventEmitter() }

Компонент привет ожидает получить значение типа «строка» и поместить его как значение свойства мой друг .



@Input() myFriend: string

Каждый раз, когда вы нажимаете на него, свойство отправки данных по щелчку декоратор Выход передаст во «внешний мир» строку, содержащую «Нео».



<h3 (click)="onClick.emit('Neo')">

Ниже приведен код компонента приложение :

app.component.ts export class AppComponent { ng = 'Angular' myName = 'Neo' upCase(st:string): void { .

} } app.component.html <hello myFriend="{{ ng }}" (onClick)="upCase($event)"></hello> <h3>My name is {{ myName }}</h3>

Обратите внимание, что компонент приложение использует тег компонента привет в своем шаблоне, который выполняет 2 действия:

  • передает строковое значение «Угловой» компонент привет использование собственности нг
  • и получает отправленное значение от компонента hello и обрабатывает полученное значение с помощью функции upCase():


<hello myFriend="{{ ng }}" (onClick)="upCase($event)">

Вы можете увидеть приложение в действии Здесь.

Теги: #typescript #angular #input #@Output()

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.