1

The goal: trigger a component residing in a module, so my subscription in the ctor of the component is activated. I'm using PreloadAllModules as a preloadingStrategy. But it's not happening.

I need to subscribe to some events in de constructor of my FriendsComponent. the setup is like this:

FriendsComponent is shown in the template of the SocialComponent, which is part of the SocialModule.

social.component.html

<div>
    <friends-component></friends-component>
</div>

the SharedModule declares the FriendsComponent. AppModule imports SharedModule, RouterModule for AppModule is like this:

  {
    path: 'social',
    component: SocialModule, 
    children: [
      { 
        path: 'friends',
        component: FriendsComponent 
      }
    ]
  },

I think the problem is because the FriendsComponent is not part of a router-outlet? Can it be done without a router-outlet?

If a module would be pre- or eager loaded, would it automatically trigger the constructors (and the subscription)? Is the issue with my preloading strategy?

I have tried adding: data:{preload:true} to the paths declared in routermodule.

Everything works fine, when the user activates the SocialModule (for instance by clicking on a button with a routerLink to social/friends), but I want it activated on startup (just not shown on any html) I'm working with Angular Ivy, but think I'm still missing the points. Any help is appreciated

BHANG
  • 354
  • 1
  • 5
  • 16

1 Answers1

1

You need to handle your initial subscriptions in a service and have the component subscribe to that service. You won't need to touch the routes. It what services are for.

You subscribe to the value you need in your FriendService and have FriendComponent subscribe to your FriendService.

dfbenny
  • 140
  • 1
  • 12