import { Provider } from './Provider'; import { Injector, InjectFlags } from '../Injector'; export class DefaultProvider extends Provider { provider : Provider; get cacheable () : boolean { return false; } constructor ( provider : Provider, scope : number = - 1 ) { super(); this.token = provider.token; this.provider = provider; this.scope = scope; } resolve ( injector : Injector ) : T { const value = injector.get( this.token, InjectFlags.Optional | InjectFlags.SkipSelf ); if ( !value ) { return this.provider.resolve( injector ); } return value; } }