diff --git a/packages/common/http/src/resource.ts b/packages/common/http/src/resource.ts index 75813d8fa6b..69161b1c39c 100644 --- a/packages/common/http/src/resource.ts +++ b/packages/common/http/src/resource.ts @@ -391,6 +391,14 @@ class HttpResourceImpl this.client = injector.get(HttpClient); } + override set(value: T): void { + super.set(value); + + this._headers.set(undefined); + this._progress.set(undefined); + this._statusCode.set(undefined); + } + // This is a type only override of the method declare hasValue: () => this is HttpResourceRef>; } diff --git a/packages/common/http/test/resource_spec.ts b/packages/common/http/test/resource_spec.ts index 78582b407f4..ce0d3ff7fa0 100644 --- a/packages/common/http/test/resource_spec.ts +++ b/packages/common/http/test/resource_spec.ts @@ -319,4 +319,19 @@ describe('httpResource', () => { req = backend.expectOne('/data'); req.flush([]); }); + + it('should reset past request data when using set()', async () => { + const backend = TestBed.inject(HttpTestingController); + const res = httpResource(() => '/data', {injector: TestBed.inject(Injector)}); + TestBed.tick(); + const req = backend.expectOne('/data'); + req.flush([]); + await TestBed.inject(ApplicationRef).whenStable(); + + res.set([]); + + expect(res.headers()).toBe(undefined); + expect(res.progress()).toBe(undefined); + expect(res.statusCode()).toBe(undefined); + }); });