, 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
, .
, !