Skip to content

Instantly share code, notes, and snippets.

@guptasanchit90
Created November 4, 2017 07:09
Show Gist options
  • Save guptasanchit90/28fce1bcec4f3e0095f00f12c5d6354a to your computer and use it in GitHub Desktop.
Save guptasanchit90/28fce1bcec4f3e0095f00f12c5d6354a to your computer and use it in GitHub Desktop.
Modular Service / Provider in Angular
@Component()
export class CategoryComponent {
constructor(@Inject("ShopCategoryProvider") public shopCategoryProvider) {
shopCategoryProvider.getCategories().subscribe(response=>{
// Do stuff with data
});
}
export interface IShopCategoryProvider {
getCategories(): Observable<any>;
}
export let shopCategoryFactory = (networkHelper: NetworkHelper, returnService1:boolean): IShopCategoryProvider => {
if(returnService1)
return new ShopCategoryProvider1(networkHelper);
} else {
return new ShopCategoryProvider2(networkHelper);
}
};
@NgModule({
imports: [NetworkModule],
providers: [
{
provide: "ShopCategoryProvider",
useFactory: shopCategoryFactory,
deps: [NetworkHelper,true],
multi: false
}
]
})
export class ProvidersModule { }
@Injectable()
export class ShopCategoryProvider1 implements IShopCategoryProvider {
constructor(private networkHelper: NetworkHelper) {
}
getCategories(): Observable<any> {
// Do some stuff and return data
return Observable.empty();
}
}
@Injectable()
export class ShopCategoryProvider2 implements IShopCategoryProvider {
constructor(private networkHelper: NetworkHelper) {
}
getCategories(): Observable<any> {
// Do some stuff and return data
return Observable.empty();
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment