Size: a a a

Angular - русскоговорящее сообщество

2020 May 31

L

Let me take you into... in Angular - русскоговорящее сообщество
Aleksandr Sannikov
Всем привет!

Подскажите, пожалуйста, как быть в такой ситуации. Есть feature-модуль с собственным куском общего стейта (ngrx), есть 2 lazy-модуля, в которых он используется. Вся логика работы этого feature-модуля на обеих страницах одинаковая, кроме бэка, из которого он получает данные.

Для этого я внутри feature-модуля сделал абстрактный API-сервис, который дёргаю в эффектах этого модуля. В lazy-модулях по месту использования я подменяю этот сервис на другой, с нужным бэком, через useClass. Проблема в том, что при переходе по страницам приложения в обоих случаях провайдится только тот сервис, страница которого была посещена первой. В итоге другая страница стучится в неправильный бэкенд и отображает фигню

Поведение довольно странное, потому что по идее у каждого модуля свой injection context, и эта ситуация должна разруливаться сама.

Видимо, это из-за использования эффектов, но я не совсем понимаю, почему так

Angular 8.2.14, ngrx 8.52
Типичная проблема ngrx, просто вынеси свою СторФичу в глобал. Либо делай отдельный стейт под 2 разных сервиса (бойлерплейт)
источник

VC

Vlad Chabanenko in Angular - русскоговорящее сообщество
Vlad Is Love
Но если я вывожу WeatherData.weather то консоль говорит что это обьект
Но ведь weather массив как видно на скрине
источник

V

Vlad Is Love in Angular - русскоговорящее сообщество
Осознал ошибку, спасибо)
источник

VB

Valentin Buryakov in Angular - русскоговорящее сообщество
Aleksandr Sannikov
Всем привет!

Подскажите, пожалуйста, как быть в такой ситуации. Есть feature-модуль с собственным куском общего стейта (ngrx), есть 2 lazy-модуля, в которых он используется. Вся логика работы этого feature-модуля на обеих страницах одинаковая, кроме бэка, из которого он получает данные.

Для этого я внутри feature-модуля сделал абстрактный API-сервис, который дёргаю в эффектах этого модуля. В lazy-модулях по месту использования я подменяю этот сервис на другой, с нужным бэком, через useClass. Проблема в том, что при переходе по страницам приложения в обоих случаях провайдится только тот сервис, страница которого была посещена первой. В итоге другая страница стучится в неправильный бэкенд и отображает фигню

Поведение довольно странное, потому что по идее у каждого модуля свой injection context, и эта ситуация должна разруливаться сама.

Видимо, это из-за использования эффектов, но я не совсем понимаю, почему так

Angular 8.2.14, ngrx 8.52
Можно в глобал вынести общий стейт, который будет ининится дефолтным значением, и деволтными редьюсером. Потом когда lazy модуль загрузится,  то этот дефолтный стейт заменится уже реальным. Типа такого использовал давно ещё
источник

AS

Aleksandr Sannikov in Angular - русскоговорящее сообщество
Let me take you into the light
Типичная проблема ngrx, просто вынеси свою СторФичу в глобал. Либо делай отдельный стейт под 2 разных сервиса (бойлерплейт)
Попробовал вынести фичу в глобал, теперь вообще в обоих случаях используется абстрактный сервис, useClass игнорируется. Правильно ли я понимаю, что нужно редьюсер фичи добавить в общий редьюсер, а её эффекты в app.module?
источник

AS

Aleksandr Sannikov in Angular - русскоговорящее сообщество
Valentin Buryakov
Можно в глобал вынести общий стейт, который будет ининится дефолтным значением, и деволтными редьюсером. Потом когда lazy модуль загрузится,  то этот дефолтный стейт заменится уже реальным. Типа такого использовал давно ещё
Ну у меня все фичи в приложении сделаны  именно так, с дефолтным редьюсером
источник

VB

Valentin Buryakov in Angular - русскоговорящее сообщество
Aleksandr Sannikov
Ну у меня все фичи в приложении сделаны  именно так, с дефолтным редьюсером
Тогда сделайте один сервис, и в него провайдите через токен к какому бэку стучаться. И в каждом lazy модуле провайдите уже это значение. И тогда в завимимости от модуля будет браться нужное значение.
источник

SV

Sla V in Angular - русскоговорящее сообщество
Все привет. У меня есть 2 списка(todo и done), элементы которых я могу перетаскивать между собой.

Пример взят отсюда
https://material.angular.io/cdk/drag-drop/examples

Как мне изменить данные, в перетаскиваемом элементе, до того, как он попадёт из одного списка, в другой.

Мб есть какие-то определённые методы, потому что из examples я ничего подобного не увидел?
источник

SV

Sla V in Angular - русскоговорящее сообщество
У меня идея только одна появилась - перед тем как помещать элемент массива из одного в другой, то мне придётся где-то хранить данные этого промежуточного элемента и потом подменять их
источник

B

Bretbas in Angular - русскоговорящее сообщество
Народ. Вот что мне высрала Angular при билде в prod режиме.
источник

B

Bretbas in Angular - русскоговорящее сообщество
У меня вопрос. А как я могу тут изменить enviroment файл, чтобы какие нибудь конфиги изменить?
источник

B

Bretbas in Angular - русскоговорящее сообщество
Или мне придется перекомпилироваться для этого?
источник

R

Remite in Angular - русскоговорящее сообщество
Bretbas
Или мне придется перекомпилироваться для этого?
компилировать с нужным енв файлом
источник

VC

Vlad Chabanenko in Angular - русскоговорящее сообщество
Bretbas
У меня вопрос. А как я могу тут изменить enviroment файл, чтобы какие нибудь конфиги изменить?
У тебя это задаётся в angular.json
источник

VC

Vlad Chabanenko in Angular - русскоговорящее сообщество
источник

B

Bretbas in Angular - русскоговорящее сообщество
@Rem1te , @vlad_chabanenko , да этого понятно все.
Но вот я скомпилил. И хочу заменить кое что в environments.prod.

неужели для этого мне нужно перекомпилироваться?
источник

R

Remite in Angular - русскоговорящее сообщество
Bretbas
@Rem1te , @vlad_chabanenko , да этого понятно все.
Но вот я скомпилил. И хочу заменить кое что в environments.prod.

неужели для этого мне нужно перекомпилироваться?
да
источник

AB

Andrey Beznosov in Angular - русскоговорящее сообщество
Конечно надо
источник

B

Bretbas in Angular - русскоговорящее сообщество
@Rem1te , бред.
А как сделать, чтобы у меня конфиг был, который не заставлял бы перекомпилировать приложение?
источник

B

Bretbas in Angular - русскоговорящее сообщество
Как в ASP.NET Core файл appSettings.json
источник