Angular-RU SDK
  • Getting Started
    • Introduction
  • CDK
    • @angular-ru/cdk/typings
    • @angular-ru/cdk/number
    • @angular-ru/cdk/string
    • @angular-ru/cdk/date
    • @angular-ru/cdk/array
    • @angular-ru/cdk/object
    • @angular-ru/cdk/regexp
    • @angular-ru/cdk/function
    • @angular-ru/cdk/runtime
    • @angular-ru/cdk/ivy
    • @angular-ru/cdk/utils
    • @angular-ru/cdk/class-transformer
    • @angular-ru/cdk/validators
    • @angular-ru/cdk/directives
    • @angular-ru/cdk/decorators
    • @angular-ru/cdk/pipes
    • @angular-ru/cdk/rxjs
    • @angular-ru/cdk/animations
    • @angular-ru/cdk/zone.js
    • @angular-ru/cdk/webworker
    • @angular-ru/cdk/node.js
    • @angular-ru/cdk/flex-layout
    • @angular-ru/cdk/http
    • @angular-ru/cdk/logger
    • @angular-ru/cdk/stream
    • @angular-ru/cdk/tooltip
    • @angular-ru/cdk/virtual-table
    • @angular-ru/cdk/big-decimal
  • NGXS
    • Introduction
    • @StateRepository
    • @DataAction
    • @Computed
    • @Persistence
    • Entity state adapter
    • Unit Testing
    • Lifecycle
    • Immutability
    • Extension API
Powered by GitBook
On this page

Was this helpful?

Edit on GitHub
  1. NGXS

Extension API

import { NgxsDataPluginModule } from '@angular-ru/ngxs';
// ..

@NgModule({
    imports: [
        NgxsDataPluginModule.forRoot([
            MY_FIRST_EXTENSION,
            MY_SECOND_EXTENSION,
            MY_THIRD_EXTENSION,
            MY_FOURTH_EXTENSION,
            MY_FIFTH_EXTENSION
        ])
    ]
})
export class AppModule {}

my-extensions.ts - you can define any providers in your module:

import { NgxsDataExtension } from '@angular-ru/ngxs/typings';
// ..

export const MY_FIRST_EXTENSION: NgxsDataExtension = {
    provide: NGXS_PLUGINS,
    useClass: MySuperService,
    multi: true
};

export const MY_SECOND_EXTENSION: NgxsDataExtension = [
    {
        provide: NGXS_PLUGINS,
        useClass: FeatureService,
        multi: true
    },
    {
        provide: MyInjectableToken,
        useFactory: (): MyFactory => new MyFactory()
    }
];

export const MY_THIRD_EXTENSION: NgxsDataExtension = [MySuperPluginA.forRoot(), MySuperPluginB.forRoot()];

export const MY_FOURTH_EXTENSION: NgxsDataExtension = MyInjectableService;

export const MY_FIFTH_EXTENSION: NgxsDataExtension = {
    provide: MY_TOKEN,
    useValue: 'VALUE'
};
PreviousImmutability

Last updated 3 years ago

Was this helpful?