diff --git a/packages/common/src/directives/ng_optimized_image/ng_optimized_image.ts b/packages/common/src/directives/ng_optimized_image/ng_optimized_image.ts index 9852166252f001..07ac06b899ba54 100644 --- a/packages/common/src/directives/ng_optimized_image/ng_optimized_image.ts +++ b/packages/common/src/directives/ng_optimized_image/ng_optimized_image.ts @@ -418,7 +418,8 @@ export class NgOptimizedImage implements OnInit, OnChanges, OnDestroy { if (this.ngSrcset) { rewrittenSrcset = this.getRewrittenSrcset(); - } else if (!this._disableOptimizedSrcset && !this.srcset) { + } else if ( + !this._disableOptimizedSrcset && !this.srcset && this.imageLoader !== noopImageLoader) { rewrittenSrcset = this.getAutomaticSrcset(); } diff --git a/packages/common/test/directives/ng_optimized_image_spec.ts b/packages/common/test/directives/ng_optimized_image_spec.ts index 1e7cff14fee06f..52185ef5c66957 100644 --- a/packages/common/test/directives/ng_optimized_image_spec.ts +++ b/packages/common/test/directives/ng_optimized_image_spec.ts @@ -1401,6 +1401,20 @@ describe('Image directive', () => { return `${IMG_BASE_URL}/${config.src}${width}`; }; + it('should not generate a srcset if the default noop loader is used', () => { + setupTestingModule({noLoader: true}); + + const template = ` + + `; + const fixture = createTestComponent(template); + fixture.detectChanges(); + + const nativeElement = fixture.nativeElement as HTMLElement; + const img = nativeElement.querySelector('img')!; + expect(img.getAttribute('srcset')).toBeNull(); + }); + it('should add a responsive srcset to the img element if sizes attribute exists', () => { setupTestingModule({imageLoader}); @@ -1538,6 +1552,7 @@ class TestComponent { function setupTestingModule(config?: { imageConfig?: ImageConfig, imageLoader?: ImageLoader, + noLoader?: boolean, extraProviders?: Provider[], component?: Type }) { @@ -1548,8 +1563,8 @@ function setupTestingModule(config?: { const loader = config?.imageLoader || defaultLoader; const extraProviders = config?.extraProviders || []; const providers: Provider[] = [ - {provide: DOCUMENT, useValue: window.document}, {provide: IMAGE_LOADER, useValue: loader}, - ...extraProviders + {provide: DOCUMENT, useValue: window.document}, + ...(config?.noLoader ? [] : [{provide: IMAGE_LOADER, useValue: loader}]), ...extraProviders ]; if (config?.imageConfig) { providers.push({provide: IMAGE_CONFIG, useValue: config.imageConfig});