Лучше общаться между родительскими / дочерними компонентами с помощью RXJS или @ input / @ output - PullRequest
1 голос
/ 16 июня 2019

Я осмотрелся и обнаружил, что вы можете общаться с RXJS, например, этот вопрос объясняет, как: https://stackoverflow.com/questions/50967216/angular-5-6-components-communication-using-rxjs#= Мой вопрос заключается в том, какой способ связи предпочтительнее, учитывая схему излучения (@output)и получать события (@input)?Я должен добавить, что импорт службы кажется неуклюжим, поскольку он связывает вас с этой конкретной службой, но это может быть только моим ограниченным пониманием.

Ответы [ 3 ]

0 голосов
/ 16 июня 2019

Я думаю, что наиболее предпочтительным способом является использование ввода / вывода, потому что это делает ваш компонент более общим, а не связанным с конкретной реализацией.Таким образом, у вас есть возможность повторно использовать его в другом месте, просто передав другое свойство в Input и используя другой обработчик с Output.

В общем, не так много различий в том, что вы используете - либо сервис, либо Input / Output.Просто разные стратегии реализации для одного и того же.Однако использование службы является более конкретным, а не «абстрактным», поэтому, если вам нужен тот же компонент в другом контексте, вам потребуется реализовать другой компонент, который использует другой сервис.

ИМХО, ввод / вывод предпочтительнее вбольшинство случаев.

0 голосов
/ 16 июня 2019

Гораздо проще и лучше использовать переменные ввода / вывода, чем rxjs observables в этом случае по следующим причинам:

  1. При вводе / выводе вам не нужно создавать службу и внедрять ее воба компонента.
  2. Нет необходимости заниматься подпиской / отпиской.Angular делает это для вас с переменными ввода и вывода.

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

0 голосов
/ 16 июня 2019

Если есть отношения родитель-ребенок, вы всегда будете использовать события и входные данные.Использование передачи информации через сервис будет осуществляться только при отсутствии связи между вашими компонентами.

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