Как передавать данные между компонентами в Angular2?
Здравствуйте, друзья. Необходима консультация как правильно реализовать сохранение и передачу данных в Angular2. Пока реализован простой метод, авторизация происходит в service и сохраняется там как некий объект. Есть возможность дергать метод этого сервиса допустим userService.getUser() и он мне вернет объект user.
Еще видел когда сохраняют некоторые данные в саму модель. Подскажите как корректнее это делать?
Для передачи данных между компонентами - @Input() @Output(), с помощью этого удобно писать переиспользуемые контролы)
уточни какие данные ты хочешь хранить
1) Если просто для отображения View то из сервиса то в модель
2) если это аутентификация, то храни в localStorage пользовательский токен и тд)
А что если я получил объект user где хранится принадлежность к клубу и мне надо это отфильтровать в компоненте с книгам, те. отдать ему книги его клуба.
ar5:
Тут я видел бы 3 сценария
1) Дергать API каждый раз. при открытие компонента с книгами делал бы запрос к апи с id пользователя и отдавал бы данные для компонента с книгами его клуба. (все равно, что дернуть userService.getUser())
2) Если же предполагается, что все данные уже в родительском компоненте, а в дочернем отобразить книги клуба пользователя, то нужно хранить членство пользователя, можно так же при авторизации запоминать в localStorage данные пользователя и членство в клубах
localStorage.setItem('currentUser', .....));
i(localStorage.getItem('currentUser'))
Но что если у пользователя поменялось членство или их стало больше, нужно будет обновить состояние в localStorage. и тд..
3) в моделе Клуб свойство bool IsMyClub. Просто получаешь список всех клубов , и когда нужно отобразить только клуб текущего пользователя фильтруешь по этому атрибуту, тогда и хранить ничего не надо, и за консистентностью следить сервер) и через @Input() передаешь модель Club в дочерний компонент