export abstract class SocketService {
abstract connect();
abstract subscribe();
abstract emit();
abstract disconnect();
}
export class SocketIOService extends SocketService {
...
}
export class AppComponent {
constructor(private socket: SocketService) {
socket.connect();
}
}
@NgModule({
...
providers: [{
provide: SocketService,
useClass: SocketIOService
}]
})
export class AppModule {
}