Size: a a a

2020 July 24

M

Malikov in Angular Kyiv
store architecture как отдельный вид программирования)
источник

(

(λx.Me) Panda in Angular Kyiv
там 4 разных варианта вообще-то)
источник

A

Antony in Angular Kyiv
Да, но у меня на проекте используется именно этот, и я не понимаю зачем вообще иметь возможность провайдить редьюсеры по токену? В каком кейсе это может пригодиться?
источник

AS

Alex S in Angular Kyiv
Antony
Да, но у меня на проекте используется именно этот, и я не понимаю зачем вообще иметь возможность провайдить редьюсеры по токену? В каком кейсе это может пригодиться?
я до недавнего думал, что мне не пригодится необходимость писать свой кастомный forRoot/forFeature. Анннет. Теперь пригодилось 😄

так что лучше запомни, что оно существует и потом внезапмно вспомни в час нужды…)
источник

A

Antony in Angular Kyiv
:)
источник

AS

Alex S in Angular Kyiv
а
источник

AS

Alex S in Angular Kyiv
ну я придумал
источник

AS

Alex S in Angular Kyiv
может быть у тебя есть монорипо, в которой есть 1 библиотечка, но она должна как-то зависеть от разных.. стейтов? хз, сырая идея. И ты инжектишь в эту либу разные стейты в зависимости от приложения или чего-либо есчо
источник

AS

Alex S in Angular Kyiv
как-то так
тож слабо пока предствляю
источник

(

(λx.Me) Panda in Angular Kyiv
источник

(

(λx.Me) Panda in Angular Kyiv
https://github.com/ngrx/platform/issues/116
вот нашел причины появления InjectionToken-ов в forFeature
источник

(

(λx.Me) Panda in Angular Kyiv
интересно) это появилось как резльтат workaround-а при ошибке компиляции AOT, когда CLI был еще сырой и бажный, возможно потом пофиксили, а воркараунд остался
источник

A

Antony in Angular Kyiv
Насколько я понял читая коменты, то в этом тикете была проблема с тем что редьюсеры по токену не инжектились, а инжектился обьект создаваемый new InjectionToken<ActionReducerMap<State>>('Registered Reducers');  https://github.com/ngrx/platform/issues/116#issuecomment-316835579
это ламало логику в этом месте https://github.com/ngrx/platform/pull/36/commits/b7ec98282a304b529c7944707fa08286f7abd02f#diff-9efc753836490d7009e489514515dfd1R42
и воркераундом в их кейсе было привязывать редьюсеры к токену через Object.assign https://github.com/ngrx/platform/issues/116#issuecomment-316843727
источник

A

Antony in Angular Kyiv
Тоесть InjectionToken'ы добавили до этого
источник

A

Antony in Angular Kyiv
Не совсем понимаю как именно это полезно для тестов. Насколько я понимаю, в юнит тесте с этого PR'а https://github.com/ngrx/platform/pull/36/commits/b7ec98282a304b529c7944707fa08286f7abd02f#diff-5aa39e264e3e67e9957ca5c3ed95a044R40 можно было передать просто редьюсеры в forRoot
источник

(

(λx.Me) Panda in Angular Kyiv
да, вы правы) я наискосок прочитал историю
источник

(

(λx.Me) Panda in Angular Kyiv
В общем, сегодня единственная причина использовать через инжекшн токен : "а почему бы и нет"
источник

A

Antony in Angular Kyiv
Надо будет как-то спросить у кого-то из разработчиков. Возможно @AlexOkrushko сможет помочь
источник

AO

Alex Okrushko in Angular Kyiv
Спасибо за таг @wonder_tony 👍
Деталей точно не знаю, они были добавлены до меня, но очень похоже на AOT проблемы + combineReducers.
источник

AO

Alex Okrushko in Angular Kyiv
источник