Вот мой магазин:Angular2 NgRx.Store и извлекая селекторы для повторного использования
{
comments:{
entities:{id:comment}
ids:[ids...]
},
videos:{
entities:{id:video}
ids:[ids...]
}
}
Вот мои прогнозы:
export function getVideoById(id) {
return (state$: Observable<AppState>) => _getVideoById(s, id);
}
function _getVideoById(s: AppState, id: string) {
return s.videos.entities[id];
}
export function getCommentsByVideoId(id) {
return (state$: Observable<AppState>) =>
state$.map((s: AppState) => _getCommentsByVideoId(s, id))
}
function _getCommentsByVideoId(s: AppState, id) {
let currentVid = _getVideoById(s, id);
return currentVid.commentIds.map(id => s.comments.entities[id]);
}
А вот как получить доступ к данным с помощью выступы:
this.video$ = this.store.let(getVideoById(this.videoId));
this.comments$ = this.store.let(getCommentsByVideoId(this.videoId));
Мой вопрос:
я в настоящее время отделения в 2-х штук мои проекции, так что я могу повторно использовать некоторые части в других проекциях (ie: let currentVid = _getVideoById(s, id);)
.
Есть ли способ, который я могу объявить мои проекции в один блок и использовать их в других проекциях?
Вид проекционной композиции?
Я видел примеры этого, но каждый раз, когда они «уменьшают» «узкую» область проекции (то есть: мы начинаем с видео, и мы глубже погружаемся в видео, мы никогда не сможем вернуться к другим ветвям как «комментарии»). Я новичок во всем этом, поэтому некоторые советы будут очень признательны,
Спасибо.
вы смотрели на [сложенных селекторов] (https://github.com/ngrx/example-app/blob/master/src/ редукторы/index.ts # L101-L125) в руководстве 'ngrx/example-app' для руководства? – cartant
Да, я посмотрел на него некоторое время назад (спасибо), и я нашел это довольно сложным, поэтому я придумал решение выше ... – Brett