Skip to content

Commit

Permalink
feat(AgmCoreModule): support loader config
Browse files Browse the repository at this point in the history
Closes #609
  • Loading branch information
sebholstein committed Sep 1, 2016
1 parent 05544d5 commit dba6a36
Show file tree
Hide file tree
Showing 2 changed files with 41 additions and 35 deletions.
39 changes: 39 additions & 0 deletions src/core/core-module.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
import {ModuleWithProviders, NgModule, Provider, provide} from '@angular/core';

import {SebmGoogleMap} from './directives/google-map';
import {SebmGoogleMapCircle} from './directives/google-map-circle';
import {SebmGoogleMapInfoWindow} from './directives/google-map-info-window';
import {SebmGoogleMapMarker} from './directives/google-map-marker';
import {SebmGoogleMapPolyline} from './directives/google-map-polyline';
import {SebmGoogleMapPolylinePoint} from './directives/google-map-polyline-point';
import {LazyMapsAPILoader} from './services/maps-api-loader/lazy-maps-api-loader';
import {LazyMapsAPILoaderConfigLiteral, provideLazyMapsAPILoaderConfig} from './services/maps-api-loader/lazy-maps-api-loader';
import {MapsAPILoader} from './services/maps-api-loader/maps-api-loader';
import {BROWSER_GLOBALS_PROVIDERS} from './utils/browser-globals';

const CORE_DIRECTIVES: any[] = [
SebmGoogleMap, SebmGoogleMapMarker, SebmGoogleMapInfoWindow, SebmGoogleMapCircle,
SebmGoogleMapPolyline, SebmGoogleMapPolylinePoint
];

/**
* The angular2-google-maps core module. Contains all Directives/Services/Pipes
* of the core module. Please use `AgmCoreModule.forRoot()` in your app module.
*/
@NgModule({declarations: CORE_DIRECTIVES, exports: CORE_DIRECTIVES})
export class AgmCoreModule {
/**
* Please use this method when you register the module at the root level.
*/
static forRoot(lazyMapsAPILoaderConfig?: LazyMapsAPILoaderConfigLiteral): ModuleWithProviders {
const providers: Provider[] =
[...BROWSER_GLOBALS_PROVIDERS, provide(MapsAPILoader, {useClass: LazyMapsAPILoader})];
if (lazyMapsAPILoaderConfig) {
providers.push(provideLazyMapsAPILoaderConfig(lazyMapsAPILoaderConfig));
}
return {
ngModule: AgmCoreModule,
providers: providers,
};
}
}
37 changes: 2 additions & 35 deletions src/core/index.ts
Original file line number Diff line number Diff line change
@@ -1,15 +1,3 @@
import {ModuleWithProviders, NgModule, provide} from '@angular/core';

import {SebmGoogleMap} from './directives/google-map';
import {SebmGoogleMapCircle} from './directives/google-map-circle';
import {SebmGoogleMapInfoWindow} from './directives/google-map-info-window';
import {SebmGoogleMapMarker} from './directives/google-map-marker';
import {SebmGoogleMapPolyline} from './directives/google-map-polyline';
import {SebmGoogleMapPolylinePoint} from './directives/google-map-polyline-point';
import {LazyMapsAPILoader} from './services/maps-api-loader/lazy-maps-api-loader';
import {MapsAPILoader} from './services/maps-api-loader/maps-api-loader';
import {BROWSER_GLOBALS_PROVIDERS} from './utils/browser-globals';

// main modules
export * from './directives';
export * from './services';
Expand All @@ -18,26 +6,5 @@ export * from './map-types';
// Google Maps types
export {LatLngBounds, LatLng, LatLngLiteral, MapTypeStyle} from './services/google-maps-types';

const GOOGLE_MAPS_PROVIDERS: any[] = [
BROWSER_GLOBALS_PROVIDERS,
provide(MapsAPILoader, {useClass: LazyMapsAPILoader}),
];

const CORE_DIRECTIVES: any[] = [
SebmGoogleMap, SebmGoogleMapMarker, SebmGoogleMapInfoWindow, SebmGoogleMapCircle,
SebmGoogleMapPolyline, SebmGoogleMapPolylinePoint
];

/**
* The angular2-google-maps core module. Contains all Directives/Services/Pipes
* of the core module. Please use `AgmCoreModule.forRoot()` in your app module.
*/
@NgModule({declarations: CORE_DIRECTIVES, exports: CORE_DIRECTIVES})
export class AgmCoreModule {
static forRoot(): ModuleWithProviders {
return {
ngModule: AgmCoreModule,
providers: GOOGLE_MAPS_PROVIDERS,
};
}
}
// core module
export * from './core-module';

0 comments on commit dba6a36

Please sign in to comment.