diff --git a/packages/core/src/view/refs.ts b/packages/core/src/view/refs.ts index e77d0ea2f3..fac2adef91 100644 --- a/packages/core/src/view/refs.ts +++ b/packages/core/src/view/refs.ts @@ -90,7 +90,9 @@ class ComponentFactory_ extends ComponentFactory { const view = Services.createRootView( injector, projectableNodes || [], rootSelectorOrNode, viewDef, ngModule, EMPTY_CONTEXT); const component = asProviderData(view, componentNodeIndex).instance; - view.renderer.setAttribute(asElementData(view, 0).renderElement, 'ng-version', VERSION.full); + if (rootSelectorOrNode) { + view.renderer.setAttribute(asElementData(view, 0).renderElement, 'ng-version', VERSION.full); + } return new ComponentRef_(view, new ViewRef_(view), component); } diff --git a/packages/core/test/linker/regression_integration_spec.ts b/packages/core/test/linker/regression_integration_spec.ts index dd11db580a..7a65d3f7f2 100644 --- a/packages/core/test/linker/regression_integration_spec.ts +++ b/packages/core/test/linker/regression_integration_spec.ts @@ -6,9 +6,10 @@ * found in the LICENSE file at https://angular.io/license */ -import {ANALYZE_FOR_ENTRY_COMPONENTS, Component, ContentChild, Directive, InjectionToken, Injector, Input, Pipe, PipeTransform, Provider, QueryList, Renderer2, SimpleChanges, TemplateRef, ViewChildren, ViewContainerRef} from '@angular/core'; +import {ANALYZE_FOR_ENTRY_COMPONENTS, Component, ContentChild, Directive, InjectionToken, Injector, Input, NgModule, NgModuleRef, Pipe, PipeTransform, Provider, QueryList, Renderer2, SimpleChanges, TemplateRef, ViewChildren, ViewContainerRef} from '@angular/core'; import {TestBed, fakeAsync, tick} from '@angular/core/testing'; import {By} from '@angular/platform-browser'; +import {getDOM} from '@angular/platform-browser/src/dom/dom_adapter'; import {expect} from '@angular/platform-browser/testing/src/matchers'; export function main() { @@ -365,6 +366,23 @@ function declareTests({useJit}: {useJit: boolean}) { expect(testDirs[1].tpl).toBeDefined(); expect(testDirs[2].tpl).toBeDefined(); }); + + it('should not add ng-version for dynamically created components', () => { + @Component({template: ''}) + class App { + } + + @NgModule({declarations: [App], entryComponents: [App]}) + class MyModule { + } + + const modRef = TestBed.configureTestingModule({imports: [MyModule]}) + .get(NgModuleRef) as NgModuleRef; + const compRef = + modRef.componentFactoryResolver.resolveComponentFactory(App).create(Injector.NULL); + + expect(getDOM().hasAttribute(compRef.location.nativeElement, 'ng-version')).toBe(false); + }); }); }