Giter VIP home page Giter VIP logo

Comments (1)

mathisGarberg avatar mathisGarberg commented on August 15, 2024

Hi, @patriceo!

Great to hear the repo helps you out!

The AuthModule is an eagerly-loaded module, since it's imported in the AppModule. which means it has dependency to the rest of the application. This really means we don't need to import the SharedModule in the AuthModule, but as far as services goes, even lazy-loaded modules have access to them, and here's why: Angular creates a single, shared instance of the service through it's DI system. These singleton services are accessible from the root the application, which means any module have access to them. This is because services are app-scoped. You want to add the application-wide services in the core module to make them available everywhere.

There are however use-cases for services inside the SharedModule.

The SharedModule is the perfect place to declare reusable components. There is however a problem when we're dealing with services inside those components. Angular creates their own local instance of service inside every lazy-loaded module, which basically means we don't have access to the CoreModule' services in the SharedModule' components. This will probably result in a circular dependency error. But we need access to services inside the shared components as well. Luckily, Angular has an awesome feature called ModuleWithProviders. By importing the SharedModule in the AppModule and running the forRoot() method, every other component lazy-loaded or not, will have the same access to those services as well.

Best,
Mathis

from angular-folder-structure.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.