В чем разница между использованием изменения служебной переменной в компоненте и подпиской на событие из службы? - PullRequest
0 голосов
/ 15 ноября 2018

У меня есть три компонента. рецепт, пункт рецепта и детали рецепта. При щелчке по рецепту из компонента элемента рецепта отображаются сведения о рецепте этого конкретного рецепта (т. Е. Активируется компонент рецепта).

У меня есть один общий сервис - рецепт-сервис. Который я думаю использовать его для связи между всеми компонентами.

Подход 1: Когда я нажимаю на рецепт из пункта рецепта, я вызываю функцию, которая будет указывать на другую функцию в службе рецептов, которая, в свою очередь, помечает переменную currentRecipe как пройденный клик рецепт. из рецепта Это значение currentRecipe я получу в компонентах recipe / recipe-details через ngOnInit для отображения деталей. Будет ли этот подход работать? изменится ли представление при изменении переменной в сервисе? Я сомневаюсь в таком подходе, так как ngOnInit проверяет только при запуске компонента.

Подход 2: Когда я нажимаю на рецепт из элемента рецепта, я вызываю функцию, которая запускает источник событий, который был объявлен в сервисе, но испускает currentRecipe непосредственно из элемента рецепта. составная часть. И я подпишусь на это событие из ngOnInit компонентов рецепта и детали рецепта, чтобы отобразить детали.

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

Спасибо за помощь!

1 Ответ

0 голосов
/ 15 ноября 2018

Оба подхода будут работать, я бы посоветовал вам перейти ко 2-му подходу, поскольку оба ваших компонента зависимы и имеют отношения.

Вы можете использовать генератор событий @input () для передачи подробностей дочернему компоненту.

...