import { CommonModule } from '@angular/common'; import { HttpClientModule } from '@angular/common/http'; import { ModuleWithProviders, NgModule } from '@angular/core'; import { SocialLoginModule as SocialModule, AuthServiceConfig } from 'angularx-social-login'; import { ApiKeyProvider } from './constants'; import { SocialLoginService } from './services'; import { ISocialLoginConfig } from './interfaces'; import { SocialLoginComponent } from './components'; @NgModule({ imports: [ CommonModule, SocialModule, HttpClientModule, ], declarations: [ SocialLoginComponent, ], providers: [ SocialLoginService, ], exports: [ SocialLoginComponent, ], }) export class SocialLoginModule { public static forConfig(config: ISocialLoginConfig = {} as ISocialLoginConfig): ModuleWithProviders { return { ngModule: SocialLoginModule, providers: [ SocialLoginService, { provide: AuthServiceConfig, useFactory: ApiKeyProvider(config), }, { provide: 'SocialConfig', useValue: config, }, ], }; } }