Передача значения между двумя компонентами в angular2-метеорном проекте

Я использую angular2-метеор.

Когда я пытаюсь передать значение между двумя компонентами (когда значение изменяется в первом компоненте, создается событие во втором компоненте и используется это новое значение), у меня есть два способа прямо сейчас:

  1. Одним из способов является метеорный путь: использование this.autorun а также Session.get,
  2. Другой способ - это angular2: использование Injectable обслуживание с EventEmitter,

Какой путь должен быть приоритетным? Или есть другой способ получше? Спасибо

2 ответа

Решение

Теперь я использовал angular2-meteor некоторое время.

Хотя в руководстве по angular2-meteor пока нет примеров использования или выбора службы Angular 2 или Meteor Session.

Но я чувствую, что angular 2 берет на себя инициативу в передней части, в то время как метеор облегчает реактивность, а также управляет всеми остальными.

Так что я пошел с angular2 путем использования сервиса для обмена между компонентами. И сервис очень мощный, как сказал @ todd-w-crone.

Если у кого-то есть лучший ответ, я переключусь, чтобы принять тот.

Я считаю целесообразным создать новый сервис под названием App.states.ts который доступен глобально и имитирует сессию (получить / установить). Я обычно импортирую этот сервис во все необходимые компоненты, чтобы получить или установить новое значение, такое как User.status, company.profile, lastProduct и т. Д.

Так как этот сервис @injectable он также может использовать другие сервисы, если значение еще не установлено. Это позволяет мне запрашивать переменную в компоненте appState.getLastModifiedItem(), затем в app.states.ts Я напишу эту функцию, чтобы передать this.modifiedItem или другое:

  • Запросить другую услугу item.service.ts получить данные
  • Вызовите другую функцию с itemCollection.findOne({...}) и вернуть такое значение.

Вы можете настроить запросы Mongo по своему усмотрению и хранить статические данные в appState или сохранить элементы подписки в appState.

Учтите, что все подписки, обрабатываемые @injectable внутри компонента, импортируются таким компонентом. Остерегайтесь конфликтующих подписок между компонентами / сервисами.

Другие вопросы по тегам