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});