(token: ProviderToken<T>, record: Record<T>, flags: InternalInjectFlags)
| 522 | } |
| 523 | |
| 524 | private hydrate<T>(token: ProviderToken<T>, record: Record<T>, flags: InternalInjectFlags): T { |
| 525 | const prevConsumer = setActiveConsumer(null); |
| 526 | try { |
| 527 | if (record.value === CIRCULAR) { |
| 528 | throw cyclicDependencyError(ngDevMode ? stringify(token) : ''); |
| 529 | } else if (record.value === NOT_YET) { |
| 530 | record.value = CIRCULAR; |
| 531 | |
| 532 | if (ngDevMode) { |
| 533 | runInInjectorProfilerContext(this, token as Type<T>, () => { |
| 534 | emitInjectorToCreateInstanceEvent(token); |
| 535 | record.value = record.factory!(undefined, flags); |
| 536 | emitInstanceCreatedByInjectorEvent(record.value); |
| 537 | }); |
| 538 | } else { |
| 539 | record.value = record.factory!(undefined, flags); |
| 540 | } |
| 541 | } |
| 542 | if (typeof record.value === 'object' && record.value && hasOnDestroy(record.value)) { |
| 543 | this._ngOnDestroyHooks.add(record.value); |
| 544 | } |
| 545 | return record.value as T; |
| 546 | } finally { |
| 547 | setActiveConsumer(prevConsumer); |
| 548 | } |
| 549 | } |
| 550 | |
| 551 | private injectableDefInScope(def: ɵɵInjectableDeclaration<any>): boolean { |
| 552 | if (!def.providedIn) { |
no test coverage detected