Skip to content

Commit 39c9104

Browse files
committed
Add forFeature module initializer #57
- Add forFeature functionality - Update README - Update Demo
1 parent 7bc540d commit 39c9104

5 files changed

Lines changed: 47 additions & 5 deletions

File tree

README.MD

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -162,6 +162,27 @@ For the configuration of the module see the official firebaseui documentation: [
162162

163163
_If you use a version prior to 3.3.0 check the [old README](https://github.com/RaphaelJenni/FirebaseUI-Angular/blob/v3.2.0/README.MD)_
164164

165+
166+
#### forRoot/forFeature
167+
To configure the plugin the first time (`main.module.ts`) the `forRoot()` method is used.
168+
It builds the basis for all further uses of the plugin.
169+
But you have the possibility to overwrite the entire or just parts of the configuration in any (sub-)module.
170+
171+
##### forRoot
172+
To overwrite the entire configuration use:
173+
```
174+
FirebaseUIModule.forRoot(firebaseUiAuthConfig: NativeFirebaseUIAuthConfig)
175+
```
176+
177+
178+
##### forFeature
179+
To overwrite just parts of the configuration use:
180+
```
181+
FirebaseUIModule.forFeature(firebaseUiAuthConfig: NativeFirebaseUIAuthConfig)
182+
```
183+
This will use the in `forRoot` provided configuration and overwrite just the newly provided values.
184+
185+
165186
### Listen to auth state changes
166187
```typescript
167188
this.angularFireAuth.authState.subscribe(this.firebaseAuthChangeListener);

projects/firebaseui-angular-library/src/lib/firebaseui-angular-library.component.ts

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,10 +61,18 @@ export class FirebaseuiAngularLibraryComponent implements OnInit, OnDestroy {
6161
}
6262

6363
constructor(private angularFireAuth: AngularFireAuth,
64-
@Inject('firebaseUIAuthConfig') private firebaseUiConfig: NativeFirebaseUIAuthConfig | FirebaseUIAuthConfig,
64+
@Inject('firebaseUIAuthConfig') private _firebaseUiConfig: NativeFirebaseUIAuthConfig | FirebaseUIAuthConfig,
65+
@Inject('firebaseUIAuthConfigFeature') private _firebaseUiConfig_Feature: NativeFirebaseUIAuthConfig | FirebaseUIAuthConfig,
6566
private firebaseUIService: FirebaseuiAngularLibraryService) {
6667
}
6768

69+
get firebaseUiConfig(): NativeFirebaseUIAuthConfig | FirebaseUIAuthConfig {
70+
return {
71+
...this._firebaseUiConfig,
72+
...this._firebaseUiConfig_Feature
73+
} as NativeFirebaseUIAuthConfig | FirebaseUIAuthConfig;
74+
}
75+
6876
ngOnInit(): void {
6977
this.subscription = this.angularFireAuth.authState.subscribe((value: User) => {
7078
if ((value && value.isAnonymous) || !value) {

projects/firebaseui-angular-library/src/lib/firebaseui-angular-library.module.ts

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,17 @@ export class FirebaseUIModule {
1515
return {
1616
ngModule: FirebaseUIModule,
1717
providers: [
18-
{provide: 'firebaseUIAuthConfig', useValue: firebaseUiAuthConfig}
18+
{provide: 'firebaseUIAuthConfig', useValue: firebaseUiAuthConfig},
19+
{provide: 'firebaseUIAuthConfigFeature', useValue: {}}
20+
]
21+
};
22+
}
23+
24+
static forFeature(firebaseUIAuthConfig: NativeFirebaseUIAuthConfig | FirebaseUIAuthConfig | any): ModuleWithProviders {
25+
return {
26+
ngModule: FirebaseUIModule,
27+
providers: [
28+
{provide: 'firebaseUIAuthConfigFeature', useValue: firebaseUIAuthConfig}
1929
]
2030
};
2131
}

src/app/main/main.module.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ const routes: Routes = [
1111
@NgModule({
1212
imports: [
1313
CommonModule,
14-
FirebaseUIModule,
14+
FirebaseUIModule.forFeature({tosUrl: 'MAIN_MODULE'}),
1515
RouterModule.forChild(routes)
1616
],
1717
declarations: [MainComponent]

src/app/second-page/second.module.ts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
import {NgModule} from '@angular/core';
22
import {CommonModule} from '@angular/common';
33
import {SecondPageComponent} from './second-page.component';
4-
import {FirebaseUIModule} from 'firebaseui-angular';
54
import {RouterModule, Routes} from '@angular/router';
5+
import {firebase, FirebaseUIModule} from 'firebaseui-angular';
66

77
const routes: Routes = [
88
{path: '', component: SecondPageComponent},
@@ -12,7 +12,10 @@ const routes: Routes = [
1212
@NgModule({
1313
imports: [
1414
CommonModule,
15-
FirebaseUIModule,
15+
FirebaseUIModule.forFeature({
16+
signInOptions: [
17+
firebase.auth.GoogleAuthProvider.PROVIDER_ID]
18+
}),
1619
RouterModule.forChild(routes)
1720
],
1821
declarations: [SecondPageComponent]

0 commit comments

Comments
 (0)