Angular service providedIn VS forRoot
I'd like to know if these code
are equivalent or not.
Can I use providedIn
with the same result of
forRoot ?
Thanks in advance
@Injectable(
providedIn: 'root'
)
export class MyService
constructor()
VS
@Injectable()
export class MyService
constructor()
@NgModule(
imports:
)
export class MyModule
static forRoot(): ModuleWithProviders
return
ngModule: MyModule,
providers: [
MyService
]
;
@NgModule(
imports: [
MyModule.forRoot()
],
bootstrap: [AppComponent]
)
export class AppModule
[I would still keep my MyModule for single use with the providedId singleton services]
angular
add a comment |
I'd like to know if these code
are equivalent or not.
Can I use providedIn
with the same result of
forRoot ?
Thanks in advance
@Injectable(
providedIn: 'root'
)
export class MyService
constructor()
VS
@Injectable()
export class MyService
constructor()
@NgModule(
imports:
)
export class MyModule
static forRoot(): ModuleWithProviders
return
ngModule: MyModule,
providers: [
MyService
]
;
@NgModule(
imports: [
MyModule.forRoot()
],
bootstrap: [AppComponent]
)
export class AppModule
[I would still keep my MyModule for single use with the providedId singleton services]
angular
add a comment |
I'd like to know if these code
are equivalent or not.
Can I use providedIn
with the same result of
forRoot ?
Thanks in advance
@Injectable(
providedIn: 'root'
)
export class MyService
constructor()
VS
@Injectable()
export class MyService
constructor()
@NgModule(
imports:
)
export class MyModule
static forRoot(): ModuleWithProviders
return
ngModule: MyModule,
providers: [
MyService
]
;
@NgModule(
imports: [
MyModule.forRoot()
],
bootstrap: [AppComponent]
)
export class AppModule
[I would still keep my MyModule for single use with the providedId singleton services]
angular
I'd like to know if these code
are equivalent or not.
Can I use providedIn
with the same result of
forRoot ?
Thanks in advance
@Injectable(
providedIn: 'root'
)
export class MyService
constructor()
VS
@Injectable()
export class MyService
constructor()
@NgModule(
imports:
)
export class MyModule
static forRoot(): ModuleWithProviders
return
ngModule: MyModule,
providers: [
MyService
]
;
@NgModule(
imports: [
MyModule.forRoot()
],
bootstrap: [AppComponent]
)
export class AppModule
[I would still keep my MyModule for single use with the providedId singleton services]
angular
angular
asked Nov 11 at 18:28
user3887366
1513
1513
add a comment |
add a comment |
3 Answers
3
active
oldest
votes
providedIn
will directly injects the service
based on the value - if its 'root' it will directly inject in root module
- this will help you to stop adding your service
in module [providers]
Angular will inject the service in the module
- If in case you are using Lazy loading modules - angular will create new injectors whenever you load other modules
If you use Lazy loading is better to go with forRoot()
injection on the modules and make sure your service
doesn't create multiple injectors
Hope this helps you - Happy coding !!
Check this link for more info
So just in case of lazy loading are you sure using provideIn don't give you a singleton if you can build a simple running example I'd be most grateful :) thanks for the help
– user3887366
Nov 11 at 20:12
You can check that link for further clarification - thanks :)
– Rahul
Nov 12 at 3:47
add a comment |
Using providedIn
vs providers
:
providedIn
is the new Angular way of doing DI.providedIn
was brought since Angular 6The official name is "Tree-shakeable providers" - instead of module providing all its services, it is now the service itself declaring where it should be provided
Using
providedIn: 'root'
removes the need to import the library module at all, we can simply inject needed services and it just works
Yes, in this wayprovidedIn
is better thanforRoot
Because it is more tree shakeable.
– Pace
Nov 11 at 18:48
add a comment |
Yes, forRoot
and provideIn
both are equivalent since both will create the only and only one singleton for the app. Even though it being loaded in lazy loaded component.
Refer this nice article on it - https://medium.com/@chrishouse/when-to-use-angulars-forroot-method-400094a0ebb7
add a comment |
Your Answer
StackExchange.ifUsing("editor", function ()
StackExchange.using("externalEditor", function ()
StackExchange.using("snippets", function ()
StackExchange.snippets.init();
);
);
, "code-snippets");
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "1"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53251849%2fangular-service-providedin-vs-forroot%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
3 Answers
3
active
oldest
votes
3 Answers
3
active
oldest
votes
active
oldest
votes
active
oldest
votes
providedIn
will directly injects the service
based on the value - if its 'root' it will directly inject in root module
- this will help you to stop adding your service
in module [providers]
Angular will inject the service in the module
- If in case you are using Lazy loading modules - angular will create new injectors whenever you load other modules
If you use Lazy loading is better to go with forRoot()
injection on the modules and make sure your service
doesn't create multiple injectors
Hope this helps you - Happy coding !!
Check this link for more info
So just in case of lazy loading are you sure using provideIn don't give you a singleton if you can build a simple running example I'd be most grateful :) thanks for the help
– user3887366
Nov 11 at 20:12
You can check that link for further clarification - thanks :)
– Rahul
Nov 12 at 3:47
add a comment |
providedIn
will directly injects the service
based on the value - if its 'root' it will directly inject in root module
- this will help you to stop adding your service
in module [providers]
Angular will inject the service in the module
- If in case you are using Lazy loading modules - angular will create new injectors whenever you load other modules
If you use Lazy loading is better to go with forRoot()
injection on the modules and make sure your service
doesn't create multiple injectors
Hope this helps you - Happy coding !!
Check this link for more info
So just in case of lazy loading are you sure using provideIn don't give you a singleton if you can build a simple running example I'd be most grateful :) thanks for the help
– user3887366
Nov 11 at 20:12
You can check that link for further clarification - thanks :)
– Rahul
Nov 12 at 3:47
add a comment |
providedIn
will directly injects the service
based on the value - if its 'root' it will directly inject in root module
- this will help you to stop adding your service
in module [providers]
Angular will inject the service in the module
- If in case you are using Lazy loading modules - angular will create new injectors whenever you load other modules
If you use Lazy loading is better to go with forRoot()
injection on the modules and make sure your service
doesn't create multiple injectors
Hope this helps you - Happy coding !!
Check this link for more info
providedIn
will directly injects the service
based on the value - if its 'root' it will directly inject in root module
- this will help you to stop adding your service
in module [providers]
Angular will inject the service in the module
- If in case you are using Lazy loading modules - angular will create new injectors whenever you load other modules
If you use Lazy loading is better to go with forRoot()
injection on the modules and make sure your service
doesn't create multiple injectors
Hope this helps you - Happy coding !!
Check this link for more info
edited Nov 11 at 18:56
answered Nov 11 at 18:50
Rahul
9731315
9731315
So just in case of lazy loading are you sure using provideIn don't give you a singleton if you can build a simple running example I'd be most grateful :) thanks for the help
– user3887366
Nov 11 at 20:12
You can check that link for further clarification - thanks :)
– Rahul
Nov 12 at 3:47
add a comment |
So just in case of lazy loading are you sure using provideIn don't give you a singleton if you can build a simple running example I'd be most grateful :) thanks for the help
– user3887366
Nov 11 at 20:12
You can check that link for further clarification - thanks :)
– Rahul
Nov 12 at 3:47
So just in case of lazy loading are you sure using provideIn don't give you a singleton if you can build a simple running example I'd be most grateful :) thanks for the help
– user3887366
Nov 11 at 20:12
So just in case of lazy loading are you sure using provideIn don't give you a singleton if you can build a simple running example I'd be most grateful :) thanks for the help
– user3887366
Nov 11 at 20:12
You can check that link for further clarification - thanks :)
– Rahul
Nov 12 at 3:47
You can check that link for further clarification - thanks :)
– Rahul
Nov 12 at 3:47
add a comment |
Using providedIn
vs providers
:
providedIn
is the new Angular way of doing DI.providedIn
was brought since Angular 6The official name is "Tree-shakeable providers" - instead of module providing all its services, it is now the service itself declaring where it should be provided
Using
providedIn: 'root'
removes the need to import the library module at all, we can simply inject needed services and it just works
Yes, in this wayprovidedIn
is better thanforRoot
Because it is more tree shakeable.
– Pace
Nov 11 at 18:48
add a comment |
Using providedIn
vs providers
:
providedIn
is the new Angular way of doing DI.providedIn
was brought since Angular 6The official name is "Tree-shakeable providers" - instead of module providing all its services, it is now the service itself declaring where it should be provided
Using
providedIn: 'root'
removes the need to import the library module at all, we can simply inject needed services and it just works
Yes, in this wayprovidedIn
is better thanforRoot
Because it is more tree shakeable.
– Pace
Nov 11 at 18:48
add a comment |
Using providedIn
vs providers
:
providedIn
is the new Angular way of doing DI.providedIn
was brought since Angular 6The official name is "Tree-shakeable providers" - instead of module providing all its services, it is now the service itself declaring where it should be provided
Using
providedIn: 'root'
removes the need to import the library module at all, we can simply inject needed services and it just works
Using providedIn
vs providers
:
providedIn
is the new Angular way of doing DI.providedIn
was brought since Angular 6The official name is "Tree-shakeable providers" - instead of module providing all its services, it is now the service itself declaring where it should be provided
Using
providedIn: 'root'
removes the need to import the library module at all, we can simply inject needed services and it just works
answered Nov 11 at 18:40
TheUnreal
6,3662683157
6,3662683157
Yes, in this wayprovidedIn
is better thanforRoot
Because it is more tree shakeable.
– Pace
Nov 11 at 18:48
add a comment |
Yes, in this wayprovidedIn
is better thanforRoot
Because it is more tree shakeable.
– Pace
Nov 11 at 18:48
Yes, in this way
providedIn
is better than forRoot
Because it is more tree shakeable.– Pace
Nov 11 at 18:48
Yes, in this way
providedIn
is better than forRoot
Because it is more tree shakeable.– Pace
Nov 11 at 18:48
add a comment |
Yes, forRoot
and provideIn
both are equivalent since both will create the only and only one singleton for the app. Even though it being loaded in lazy loaded component.
Refer this nice article on it - https://medium.com/@chrishouse/when-to-use-angulars-forroot-method-400094a0ebb7
add a comment |
Yes, forRoot
and provideIn
both are equivalent since both will create the only and only one singleton for the app. Even though it being loaded in lazy loaded component.
Refer this nice article on it - https://medium.com/@chrishouse/when-to-use-angulars-forroot-method-400094a0ebb7
add a comment |
Yes, forRoot
and provideIn
both are equivalent since both will create the only and only one singleton for the app. Even though it being loaded in lazy loaded component.
Refer this nice article on it - https://medium.com/@chrishouse/when-to-use-angulars-forroot-method-400094a0ebb7
Yes, forRoot
and provideIn
both are equivalent since both will create the only and only one singleton for the app. Even though it being loaded in lazy loaded component.
Refer this nice article on it - https://medium.com/@chrishouse/when-to-use-angulars-forroot-method-400094a0ebb7
answered Nov 11 at 18:42
Sunil Singh
6,1372626
6,1372626
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Some of your past answers have not been well-received, and you're in danger of being blocked from answering.
Please pay close attention to the following guidance:
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53251849%2fangular-service-providedin-vs-forroot%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown