diff --git a/packages/core/src/metadata/resource_loading.ts b/packages/core/src/metadata/resource_loading.ts index ce4d7be738..c9ae16a81b 100644 --- a/packages/core/src/metadata/resource_loading.ts +++ b/packages/core/src/metadata/resource_loading.ts @@ -103,7 +103,7 @@ export function isComponentDefPendingResolution(type: Type): boolean { export function componentNeedsResolution(component: Component): boolean { return !!( - (component.templateUrl && !component.template) || + (component.templateUrl && !component.hasOwnProperty('template')) || component.styleUrls && component.styleUrls.length); } export function clearResolutionOfComponentResourcesQueue(): Map, Component> { diff --git a/packages/core/test/test_bed_spec.ts b/packages/core/test/test_bed_spec.ts index fa546d6ac1..56dfc65ea0 100644 --- a/packages/core/test/test_bed_spec.ts +++ b/packages/core/test/test_bed_spec.ts @@ -423,6 +423,14 @@ describe('TestBed', () => { const fixture = TestBed.createComponent(SomeComponent); expect(fixture.nativeElement.innerHTML).toBe('Template override'); }); + + it('should have an ability to override template with empty string', () => { + const SomeComponent = getAOTCompiledComponent(); + TestBed.configureTestingModule({declarations: [SomeComponent]}); + TestBed.overrideTemplateUsingTestingModule(SomeComponent, ''); + const fixture = TestBed.createComponent(SomeComponent); + expect(fixture.nativeElement.innerHTML).toBe(''); + }); }); onlyInIvy('patched ng defs should be removed after resetting TestingModule')