Size: a a a

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

2019 October 21

СС

Станислав Сидорюк in Angular - русскоговорящее сообщество
Добрый день, у меня тут проблема с роутингом, которую я чет не могу самостоятельно решить


Есть неименованный аутлет

В который загружается модуль А

У модуля А сделующий конфиг роутера

{
 path: '', component: ComponentA,
 
},

{
     path: ‘:someParam’,
     loadChildren: () => import(‘./moduleB/b.module').then(m => m.BModule),
   },
   {
     path: ':someParam',
     component: ComponentA,
   }



в модуле B  конфиг роутера следующий


co```nst routes: Routes = [
 {
   path: '',
   outlet: 'sidebar',
   component: ComponentB1,
 },
 {
   path: 'set',
   component: ComponentB2,
 }
];

```Как видите - корневой роут модуля B смотрит в именованный аутлет sidebar


Собственно проблема:

при перереходе по роуту example/:someParam - роуту модуля а контент в аутлете сайдбара рендерится как и нужно, но в именованном  выгружается
источник

S

Smooth Operator in Angular - русскоговорящее сообщество
Виталий
Может быть правильнее сказать «когда несколько лейзи модулей импортируют фича-модуль» ?
А то в вашей формулировке несостыковка. Если лейзи-модуль загружается только один раз то как же может получиться несколько инстансов его сервисов?
хмм, проверил, действительно 1 раз создает модуль
помойму раньше было не так
источник

S

Smooth Operator in Angular - русскоговорящее сообщество
тогда остается только 1 вариант
источник

S

Smooth Operator in Angular - русскоговорящее сообщество
вы этот сервис провайдите в нескольких местах
источник

СС

Станислав Сидорюк in Angular - русскоговорящее сообщество
Станислав Сидорюк
Добрый день, у меня тут проблема с роутингом, которую я чет не могу самостоятельно решить


Есть неименованный аутлет

В который загружается модуль А

У модуля А сделующий конфиг роутера

{
 path: '', component: ComponentA,
 
},

{
     path: ‘:someParam’,
     loadChildren: () => import(‘./moduleB/b.module').then(m => m.BModule),
   },
   {
     path: ':someParam',
     component: ComponentA,
   }



в модуле B  конфиг роутера следующий


co```nst routes: Routes = [
 {
   path: '',
   outlet: 'sidebar',
   component: ComponentB1,
 },
 {
   path: 'set',
   component: ComponentB2,
 }
];

```Как видите - корневой роут модуля B смотрит в именованный аутлет sidebar


Собственно проблема:

при перереходе по роуту example/:someParam - роуту модуля а контент в аутлете сайдбара рендерится как и нужно, но в именованном  выгружается
Делать плоский роутинг для модаля A без чилдрена пробовал, разницы никакой

Может у кого идеи есть какие?
источник

В

Виталий in Angular - русскоговорящее сообщество
Smooth Operator
вы этот сервис провайдите в нескольких местах
Есть ещё вариант: два лейзи модуля импортируют один фича модуль. Тогда сервисы объявленные в фича модуле не синглтоны.
Но это частный случай.
А меня интересует общий случай: В каком случае ангуляр создаёт несколько инстансов провайдеров.
источник

S

Smooth Operator in Angular - русскоговорящее сообщество
Виталий
Есть ещё вариант: два лейзи модуля импортируют один фича модуль. Тогда сервисы объявленные в фича модуле не синглтоны.
Но это частный случай.
А меня интересует общий случай: В каком случае ангуляр создаёт несколько инстансов провайдеров.
когда вы сервис провайдите
в нескольких местах
источник

В

Виталий in Angular - русскоговорящее сообщество
Smooth Operator
когда вы сервис провайдите
в нескольких местах
не подходит. Я его «провайжу» только в одном месте - в модуле являющимся зависимым для двух лейзи модулей.
источник

S

Smooth Operator in Angular - русскоговорящее сообщество
можешь сделать пример рабочий?
источник

В

Виталий in Angular - русскоговорящее сообщество
Smooth Operator
можешь сделать пример рабочий?
Что в примере показать вам?
источник

S

Smooth Operator in Angular - русскоговорящее сообщество
Виталий
Что в примере показать вам?
вашу проблему
источник

В

Виталий in Angular - русскоговорящее сообщество
Smooth Operator
вашу проблему
Проблемы нет. 🙂 Хочу понять в каком случае сервисы не синглтоны.
Всё.
источник

S

Smooth Operator in Angular - русскоговорящее сообщество
Виталий
Проблемы нет. 🙂 Хочу понять в каком случае сервисы не синглтоны.
Всё.
> не подходит.
источник

ЕЛ

Евгений Лабутин in Angular - русскоговорящее сообщество
Синглтоны скорее привычка чем необходимость
источник

DT

Dmitry Teplov in Angular - русскоговорящее сообщество
Виталий
@NgModule({
 declarations: [],
 imports: [
   CommonModule
 ],
 providers: [
   SomeDataService
 ]
})
export class DependencyModule { }
хм, странновато, кмк раньше было не так
источник

ЕЛ

Евгений Лабутин in Angular - русскоговорящее сообщество
Синглтоны нужны только в случае единого стейта между разными потребителями, в других случаях не нужны
источник

S

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

В

Виталий in Angular - русскоговорящее сообщество
Евгений Лабутин
Синглтоны нужны только в случае единого стейта между разными потребителями, в других случаях не нужны
Замечательно.
Но я не спрашивал когда нужны синглтоны а когда не нужны.
источник

S

Smooth Operator in Angular - русскоговорящее сообщество
Smooth Operator
есть гарантия на то что сервис будет синглтоном
только если есть проверка что сервис создан в единственном экземпляре
в ангуляре таких проверок нет, соотвественно и утверждать нельзя что в ангуляре есть случаи когда сервис будет синглтоном
источник

ЕЛ

Евгений Лабутин in Angular - русскоговорящее сообщество
А мне прост в автобусе скучно ))
источник