๐ Removes the need to use forRoot in Angular 2+ modules by providing guaranteed singleton services.
No .forRoot()
: Allows module consumers to import without calling aforRoot
methodSingletons
: Allows module creators to provide singleton services that don't require consumers to be concerned with accidentally providing multiple instancesTop level
: If multiple instances are attempted, the top level instance in the provider tree will be usedMultiple consumers
: If multiple libraries depend on your service and those libraries are used in a single Angular project, you can still guarantee a single instance of your service
npm install angular-provide-once --save
import { NgModule } from '@angular/core';
import { ProvideOnce } from 'angular-provide-once';
import { DependantService } from './dependant-service';
import { MyService } from './my-service';
import { OtherService } from './other-service';
@NgModule({
imports: [],
providers: [
OtherService,
DependantService,
...ProvideOnce(MyService, [DependantService])
],
declarations: []
})
export class MyModule { }
The service that should be provided once.
An optional array of services that the targetService depends on. Only include immediate dependencies (not dependencies of dependencies).
ProvideOnce
returns an array of Providers. Use the spread operator (e.g. ...ProvideOnce
) to include it along with other services.
angular-provide-once is licensed under the MIT Open Source license. For more information, see the LICENSE file in this repository.