Является ли хорошей практикой вызывать метод дочернего компонента внутри шаблона родителя в Angular? - PullRequest
0 голосов
/ 25 июня 2018

У меня есть родительский компонент, который в основном представляет собой форму, составленную из двух дочерних компонентов, каждый из которых состоит из набора inputs.Вот шаблон родительского компонента:

<!-- Bunch of user selected filters -->
<app-filters #filters>
</app-filters>

<!-- Bunch of user selected grouping options -->
<app-grouping-options #groupingOptions>
</app-grouping-options>

<!-- Emit an event with the composed query so
other component can recover and show the data
to the user -->
<button (click)="emitQuery(filters.getFilteringCriteria(), groupingOptions.getGroupingCriteria())">Search</button>

Интересующая меня часть - это вызовы методов filters.getFilteringCriteria() и groupingOptions.getGroupingOptionsCriteria().Я не уверен, является ли это хорошей практикой вообще, особенно потому, что она, кажется, нарушает предполагаемый поток данных: от родителей к детям через привязку свойств, и от детей к родителю через события .Но я действительно не знаю, как поступить в этом случае, потому что функциональность поиска - это действительно метод, а не свойство.

Кроме того, каков наилучший подход для ссылки на дочерний компонент?Через переменные шаблона или используя @ViewChild?

Спасибо за вашу помощь.

1 Ответ

0 голосов
/ 25 июня 2018

Это не лучшая практика, потому что это означает, что ваши компоненты тесно связаны (это означает, что ваш первый компонент зависит от других 2).

Если вы хотите использовать передовой опыт, положитесь на @Input для ваших фильтров (изменение дочерних фильтров изменит фильтры в родительском) и @Output для параметров группировки (используйтеисточник событий для передачи события родителю).

Теперь не поймите меня неправильно: совершенно нормально делать то, что вы сделали.Это просто означает, что вам придется пройти дополнительные мили, чтобы сделать ваши компоненты общими, если вы хотите сделать это.

Если нет, то сохраните это, даже если люди в SOF скажут вам не делать этого.Вы не вынуждены повторно использовать компоненты!

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