October DealsAmazon USOctober deal check: compare before you payAmazon US: current deals, useful picks and tech finds.Check DealsWindows FixRecommendedWindows errors stealing your time? Find the fix fastScan stability, cleanup and performance issues.Fix NowOctober DealsAmazon USDeal season is back - check today's better picksAmazon US: current deals, useful picks and tech finds.See Picks×
Skip to content
World desk3 min

Angular NG0991: Resource Completed Before Producing a Value

NG0991 occurs when an Angular rxResource or httpResource completes without emitting a value or error. Learn where to look and whether to propagate an error or emit a fallback.

What’s actually slowing this PC down?

Pick the symptom - the matching free tool is one click away.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Angular error NG0991 means an Observable-backed resource completed without emitting a value or an error. Find and fix the upstream empty completion: let the error reach the resource, emit a suitable fallback, or correct HTTP handling that swallowed the response.

What NG0991 means

Angular’s NG0991 error guidance describes a resource that finished without giving Angular either a value to expose or an error to report. A resource cannot resolve from a silent completion.

The failure may become visible when code reads the resource, but the cause is usually upstream: the Observable ended without emitting. Angular’s RxResourceOptions API requires the stream Observable to emit a value or an error before it completes. As Angular puts it, “This Observable must eventually emit a value or an error before it completes — a resource needs one of those two things to know what to show.”

Where to look first

With rxResource: inspect the stream Observable

Check the Observable returned by the stream function, including its error handlers and any operators that combine streams. One common cause is swallowing an error by returning RxJS EMPTY:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
catchError(() => EMPTY)

EMPTY completes without emitting. That leaves the resource with neither a value nor an error, producing NG0991. Also check merge, race, and similar combinations: depending on their inputs, a combined Observable can complete before any input emits.

With httpResource: inspect interceptors and response handling

httpResource creates its HTTP request internally, so start by checking the code between the request and the response—especially interceptors. An interceptor that catches an error and returns EMPTY can turn a failed request into a silent completion. Angular’s HTTP resource guidance identifies swallowed HTTP errors as a cause to investigate; the implementation reports a runtime error if the request completes before a response resolves the resource.

Choose the intended outcome

Let the resource enter its error state

If the failure should be visible as an error, do not consume it with a handler that returns EMPTY. Let the error propagate to the resource; consumers can inspect error().

Emit a fallback when that matches the data contract

If the UI should resolve with a fallback instead, return an Observable that emits a real value. For example, catching an error and returning of(null) emits null; use this only if null is a valid fallback for the resource’s data contract. A fallback emission resolves the resource with that value rather than silently completing.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Fix HTTP handling that swallows the result

Adjust an interceptor or other upstream HTTP handler to forward the response or propagate the error. If the application intentionally substitutes a response, return an actual response value instead of an empty completion.

Read resource values defensively

When empty completion may originate in code outside the component you control, check the resource state before calling value(). Use hasValue() or inspect status() to avoid reading a value that is not available. This guards consumers; it does not replace fixing the upstream completion that causes NG0991.

Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

How rxResource and httpResource differ when debugging

Resource Where the Observable comes from Where to inspect first
rxResource The application’s stream function Stream operators, error handling, and combined Observables
httpResource An HTTP request created internally Interceptors and other HTTP response-handling layers

For either resource, decide whether the intended result is a propagated error or an emitted fallback. Angular describes resources as asynchronous dependencies exposed through signals. Its resource API is intended for reads and can cancel in-progress loads when a resource is destroyed or a new request becomes available, so it is not appropriate for mutations that must not be interrupted.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Leave a Reply

Your email address will not be published. Required fields are marked *

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

More from the Wire

  1. World desk4 min
    How to Spot an AI Voice Scam Before Sending MoneyDon’t rely on how a caller sounds. Pause, call back through a known number, and verify the emergency with another trusted person before sending money.
  2. Mountain View desk4 min
    Google’s SynthID Detector: How to Check AI-Generated Images, Video and AudioGoogle’s SynthID Detector looks for an embedded watermark in supported images, video and audio. Here is what its results do—and do not—show.
  3. Redmond desk20 min
    How to create a link to File or Folder in Windows 11Windows 11 gives you several ways to point to a file or folder without moving or duplicating it. You can create a desktop shortcut,…
Recommended PC Tool
Recommended PC Tool
PC Slower Than It Used to Be?Free scan - under a minute
Crashes, No Sound, or Screen Glitches?Free driver scan

Two free Windows tools

One Free Minute Could Fix That PC

Before you go - each of these free tools takes about a minute and tackles what quietly slows a Windows PC down.

Special offer. View Outbyte info, uninstall instructions, EULA, and Privacy Policy.