#angular #angular-content-projection
#angular #angular-content-projection
Вопрос:
Рассмотрим эту упрощенную ситуацию, мы имеем:
Шаблон родительского компонента (селектор: ‘parent’):
<div class="wrapper">
<input (blur)="onBlur()"/>
<ng-content></ng-content>
</div>
Шаблон дочернего компонента (селектор: «дочерний»):
<div>{{ valueEmittedFromParentInputOnBlurEvent }}</div>
Использование, где-то на странице:
<parent>
<child></child>
</parent>
Я бы хотел обработать valueEmittedFromParentInputOnBlurEvent
в своем child
компоненте после того, как он был отправлен в событии onBlur ().
Пожалуйста, помогите мне, если сможете 🙂
Ответ №1:
Вы можете использовать сервис или предоставить входные данные для своего дочернего компонента.
Комментарии:
1. Да, но я бы не хотел использовать его в прямых отношениях child-parent, я подозреваю, что должен быть более простой способ, которого я не знаю на данный момент)
Ответ №2:
Следуйте этой концепции, чтобы иметь связь между родительским и дочерним компонентами:
- В вашем родительском компоненте html:
<child #child></child>
<input (blur)="child.onBlurEvent()"/>
вы определяете свой дочерний компонент как #child для доступа к его методам, таким как onBlurEvent()
- В вашем дочернем компоненте ts
number = 0;
onBlurMethod() {
this.number ;
}
- В вашем дочернем компоненте html
<h1>{{number}}</h1>
когда в вашем родительском элементе происходит событие onBlur, он вызывает метод onBlurEvent в дочернем элементе, и метод будет делать все, что он должен делать
это был пример, который поможет вам понять связь между родителями и дочерними элементами, эта концепция поможет вам решить вашу проблему, удачи
Комментарии:
1. Спасибо, но это не работает для ng-content. Я не могу ссылаться на
onBlurEvent()
метод неизвестного на данный момент дочернего элемента: ( Я имел в виду это « <ng-content #child></ng-content> <input (blur)=»дочерний элемент. onBlurEvent()»/> « не работает.