Why is it must to import SharedModule to Root Module?



Angular 2 document states “Shared features modules must be imported by any module expecting to use it’s declarables”.

I wonder why is it must to import Shared features module in to root module. Does it increase code base complexity?


Modules are a way to declare stuff in angular, it defines what is needed by this logical block and what is exported by it. If you don’t import your SharedModule in your RootModule, the components/services/pipes/etc defined in this SharedModule won’t be available. For example, if you want to be able to use some built-in directives (ngIf,ngFor,etc…), you need to import CommonModule (or BrowserModule).

Let’s say your SharedModule defines a component: AwesomeComponent with awesome as selector. If you want to be able to use this component in your RootModule (and why wouldn’t you, it is awesome ?), you need to import the module that declares it, otherwise angular will complain (or fail silently) that it doesn’t know this <awesome> tag.

Declaring multiple Modules can be useful if you want to isolate stuff, it enables you to make standalone library/part of application that you can reuse. If you make a new application and realize that awesome component you developped weeks ago would perfectly fit in it, if it has its own module you just need to import it.

It also allows easier bundling. instead of including that SharedModule in every lazy-loaded modules (lazy-loaded routes requires separate modules), you bundle it /load it once for all.

So does it increase code-complexity? yes, a bit, but it has many advantages.

Answered By – n00dl3

This Answer collected from stackoverflow, is licensed under cc by-sa 2.5 , cc by-sa 3.0 and cc by-sa 4.0

Leave A Reply

Your email address will not be published.

This website uses cookies to improve your experience. We'll assume you're ok with this, but you can opt-out if you wish. Accept Read More