2016-05-03 3 views
4

У меня есть компонент в Angular2, в котором размещена таблица пользователей (userTableComponnent) и другой компонент userDetails. При нажатии на строку в таблице users я хочу перенаправить на userDetails. Одна реализация заключается в том, чтобы передать userId только, поэтому в userDetails я получаю детали пользователя с помощью другого http get. Однако это избыточно, поскольку я захватываю всю информацию о пользователе в userTableComponent. Поэтому мне действительно нужно передать объект User из userTableComponent в userDetails. Любая идея, как достичь этого через маршрутизацию?Передача объектов в маршрутизации

ответ

9

Вы можете создать класс SessionService и передать его через приложение через Injection Dependency.

После выбора пользователя вы можете присоединить относительные данные к экземпляру SessionService, введенному через DI, и получить его в компоненте UserDetails.

Я надеюсь, что это помогает

+0

Спасибо за ответ. Это отлично выглядит – Hammer

+0

Не кажется ли вам, что общая служба может потерять свои данные, когда страница обновляется пользователем? –

+1

Если обновление означает использование ключа F5, да, все потеряно с момента перезагрузки приложения, если вы не используете локальное хранилище. Подумайте, что это одностраничные приложения, что означает, среди прочего, что они начинаются с момента их загрузки в браузер. – Picci

6

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

Смотрите также https://angular.io/docs/ts/latest/cookbook/component-communication.html#!#bidirectional-service

В rc.4 также data для маршрутов был вновь введен How do I pass data in Angular 2 components while using Routing?

+0

Спасибо. Ссылка очень информативна – Hammer

Смежные вопросы