Skip to content

Commit

Permalink
feat(added-providerfn): added provider function (#5)
Browse files Browse the repository at this point in the history
* feat(added-providerfn): added provider function

* feat(added-providerfn): added provider function

---------

Co-authored-by: Maxime Schlosser <maxime.schlosser@wity.sh>
  • Loading branch information
maxime-schlosser and Maxime Schlosser authored Oct 18, 2024
1 parent 35ae687 commit fcbceb9
Show file tree
Hide file tree
Showing 3 changed files with 30 additions and 18 deletions.
9 changes: 5 additions & 4 deletions projects/ngx-form-app/src/app/app.module.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,9 @@ import {NgModule} from '@angular/core';
import {AppRoutingModule} from './app-routing.module';
import {AppComponent} from './app/app.component';
import {ReactiveFormsModule} from '@angular/forms';
import {NgxFormModule} from '@paddls/ngx-form';
import {AddressFormComponent} from './address-form/address-form.component';
import {CompanyFormComponent} from './company-form/company-form.component';
import {provideNgxForm} from "@paddls/ngx-form";

@NgModule({
declarations: [
Expand All @@ -16,10 +16,11 @@ import {CompanyFormComponent} from './company-form/company-form.component';
imports: [
AppRoutingModule,
BrowserModule,
ReactiveFormsModule,
NgxFormModule.forRoot()
ReactiveFormsModule
],
providers: [
provideNgxForm()
],
providers: [],
bootstrap: [AppComponent]
})
export class AppModule {
Expand Down
37 changes: 24 additions & 13 deletions projects/ngx-form/src/lib/ngx-form.module.ts
Original file line number Diff line number Diff line change
@@ -1,20 +1,34 @@
import 'reflect-metadata';

import {Injector, ModuleWithProviders, NgModule} from '@angular/core';
import {APP_INITIALIZER, Injector, ModuleWithProviders, NgModule, Provider} from '@angular/core';
import {NgxFormBuilder} from './core/ngx-form.builder';
import {AsyncValidatorResolver} from './core/async-validator.resolver';
import {DisableOnHandler} from './core/handler/disable-on.handler';
import {ValidatorResolver} from './core/validator.resolver';
import {OnValueChangesHandler} from './core/handler/on-value-changes.handler';

export function provideNgxForm(): Provider[] {
return [
{
provide: APP_INITIALIZER,
useFactory: (injector: Injector) => (): void => {
NgxFormModule.injector = injector;
},
multi: true,
deps: [Injector]
},
NgxFormBuilder,
ValidatorResolver,
AsyncValidatorResolver,
DisableOnHandler,
OnValueChangesHandler
]
}

@NgModule()
export class NgxFormModule {

private static injector: Injector = null;

public constructor(injector: Injector) {
NgxFormModule.injector = injector;
}
public static injector: Injector = null;

public static getNgxFormBuilder(): NgxFormBuilder {
return NgxFormModule.injector.get(NgxFormBuilder);
Expand All @@ -24,16 +38,13 @@ export class NgxFormModule {
return NgxFormModule.injector;
}

/**
* @deprecated use provideNgxForm() instead
*/
public static forRoot(): ModuleWithProviders<NgxFormModule> {
return {
ngModule: NgxFormModule,
providers: [
NgxFormBuilder,
ValidatorResolver,
AsyncValidatorResolver,
DisableOnHandler,
OnValueChangesHandler
]
providers: provideNgxForm()
};
}
}
2 changes: 1 addition & 1 deletion projects/ngx-form/src/public-api.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,4 +18,4 @@ export {NgxFormGroup} from './lib/model/ngx-form-group.model';

export {NgxFormBuilder} from './lib/core/ngx-form.builder';

export {NgxFormModule} from './lib/ngx-form.module';
export {NgxFormModule, provideNgxForm} from './lib/ngx-form.module';

0 comments on commit fcbceb9

Please sign in to comment.