, DI - , - -, , .
, , , , . , , JavaScript , , Angular . TypeScript .
abstract classes. :
1) , , Javascript.
2) DI , , .
- :
@Injectable()
export abstract class DetailResolver<T, R extends Repository<T>> implements Resolve<T> {...}
@Injectable()
export class MessageResolver extends DetailResolver<Message, MessageService> {...}
NgModule :
providers: [{ provide: DetailResolver, useClass: MessageResolver }]
InjectionToken
InjectionToken ( OpaqueToken Angular 4.0). InjectionToken - , DI; , , OpaqueToken, , .
const MESSAGE_RESOLVER = new InjectionToken<DetailResolver<Message, MessageService>>('MESSAGE_RESOLVER');
, InjectionToken, . NgModule.
providers: [{ provide: MESSAGE_RESOLVER, useClass: MessageResolver }]
, useClass ; , useValue useFactory, .
, !