Skip to content

Instantly share code, notes, and snippets.

@diestrin
Last active September 13, 2016 22:39
Show Gist options
  • Save diestrin/e189e2fe6ec4d76dab4d6a7d45e5b069 to your computer and use it in GitHub Desktop.
Save diestrin/e189e2fe6ec4d76dab4d6a7d45e5b069 to your computer and use it in GitHub Desktop.
import {NgModule} from '@angular/core';
import {Awesome} from './awesome.base';
import {AwesomeServer} from './awesome.server';
@NgModule({
providers: [
{provide: Awesome, useClass: AwesomeServer}
]
})
export class App {}
export class Awesome {
constructor(private someOtherService: any) {}
public displayData(): void {
this.someOtherService.get()
.map(this.modifyData.bind(this))
.subscribe(this.renderInScreen.bind(this))
}
protected modifyData (data: any): any {
throw 'Not Implmented';
}
protected renderInScreen(data: any): void {
throw 'Not Implmented';
}
}
import {Awesome} from './awesome.base';
export class AwesomeBrowser extends Awesome {
protected modifyData (data: any): any {
// custom logic for browser
return data;
}
protected renderInScreen(data: any): void {
// custom logic for browser
}
}
import {Awesome} from './awesome.base';
export class AwesomeServer extends Awesome {
protected modifyData (data: any): any {
// custom logic for server
return data;
}
protected renderInScreen(data: any): void {
// custom logic for server
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment