Skip to content

Commit fcbceb9

Browse files
maxime-schlosserMaxime Schlosser
and
Maxime Schlosser
authored
feat(added-providerfn): added provider function (#5)
* feat(added-providerfn): added provider function * feat(added-providerfn): added provider function --------- Co-authored-by: Maxime Schlosser <maxime.schlosser@wity.sh>
1 parent 35ae687 commit fcbceb9

File tree

3 files changed

+30
-18
lines changed

3 files changed

+30
-18
lines changed

projects/ngx-form-app/src/app/app.module.ts

+5-4
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,9 @@ import {NgModule} from '@angular/core';
33
import {AppRoutingModule} from './app-routing.module';
44
import {AppComponent} from './app/app.component';
55
import {ReactiveFormsModule} from '@angular/forms';
6-
import {NgxFormModule} from '@paddls/ngx-form';
76
import {AddressFormComponent} from './address-form/address-form.component';
87
import {CompanyFormComponent} from './company-form/company-form.component';
8+
import {provideNgxForm} from "@paddls/ngx-form";
99

1010
@NgModule({
1111
declarations: [
@@ -16,10 +16,11 @@ import {CompanyFormComponent} from './company-form/company-form.component';
1616
imports: [
1717
AppRoutingModule,
1818
BrowserModule,
19-
ReactiveFormsModule,
20-
NgxFormModule.forRoot()
19+
ReactiveFormsModule
20+
],
21+
providers: [
22+
provideNgxForm()
2123
],
22-
providers: [],
2324
bootstrap: [AppComponent]
2425
})
2526
export class AppModule {
+24-13
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,34 @@
11
import 'reflect-metadata';
22

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

10+
export function provideNgxForm(): Provider[] {
11+
return [
12+
{
13+
provide: APP_INITIALIZER,
14+
useFactory: (injector: Injector) => (): void => {
15+
NgxFormModule.injector = injector;
16+
},
17+
multi: true,
18+
deps: [Injector]
19+
},
20+
NgxFormBuilder,
21+
ValidatorResolver,
22+
AsyncValidatorResolver,
23+
DisableOnHandler,
24+
OnValueChangesHandler
25+
]
26+
}
27+
1028
@NgModule()
1129
export class NgxFormModule {
1230

13-
private static injector: Injector = null;
14-
15-
public constructor(injector: Injector) {
16-
NgxFormModule.injector = injector;
17-
}
31+
public static injector: Injector = null;
1832

1933
public static getNgxFormBuilder(): NgxFormBuilder {
2034
return NgxFormModule.injector.get(NgxFormBuilder);
@@ -24,16 +38,13 @@ export class NgxFormModule {
2438
return NgxFormModule.injector;
2539
}
2640

41+
/**
42+
* @deprecated use provideNgxForm() instead
43+
*/
2744
public static forRoot(): ModuleWithProviders<NgxFormModule> {
2845
return {
2946
ngModule: NgxFormModule,
30-
providers: [
31-
NgxFormBuilder,
32-
ValidatorResolver,
33-
AsyncValidatorResolver,
34-
DisableOnHandler,
35-
OnValueChangesHandler
36-
]
47+
providers: provideNgxForm()
3748
};
3849
}
3950
}

projects/ngx-form/src/public-api.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -18,4 +18,4 @@ export {NgxFormGroup} from './lib/model/ngx-form-group.model';
1818

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

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

0 commit comments

Comments
 (0)