From 2e31563ccfa762f3d5d0be3da46e37a3018cda23 Mon Sep 17 00:00:00 2001 From: Dmitriy Shekhovtsov Date: Wed, 14 Sep 2016 18:05:14 +0300 Subject: [PATCH] fix(modal): should fix 'no provider for ...' exception should fix #854, fix #951 --- components/utils/components-helper.service.ts | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/components/utils/components-helper.service.ts b/components/utils/components-helper.service.ts index bf16a4d30c..e4540a0247 100644 --- a/components/utils/components-helper.service.ts +++ b/components/utils/components-helper.service.ts @@ -38,13 +38,20 @@ export class ComponentsHelper { * ``` * @returns {ViewContainerRef} - application root view component ref */ - public getRootViewContainerRef(injector:Injector):ViewContainerRef { + public getRootViewContainerRef(_injector:Injector):ViewContainerRef { // The only way for now (by @mhevery) // https://github.com/angular/angular/issues/6446#issuecomment-173459525 // this is a class of application bootstrap component (like my-app) const classOfRootComponent = this.applicationRef.componentTypes[0]; // this is an instance of application bootstrap component - const appInstance = injector.get(classOfRootComponent); + let appInstance:any; + let injector:any = _injector as any; + while (!appInstance) { + appInstance = injector.get(classOfRootComponent, false); + if (!appInstance && injector.parentInjector) { + injector = injector.parentInjector; + } + } return appInstance.viewContainerRef; }