0
0
Angularframework~10 mins

Loading states and error patterns in Angular - Step-by-Step Execution

Choose your learning style9 modes available
Concept Flow - Loading states and error patterns
Component Initialized
Start Data Fetch
Show Loading State
Data Fetch Result
Success
Show Data
User Action?
Retry or End Process
This flow shows how an Angular component starts fetching data, shows a loading state, then either displays data on success or an error message on failure, allowing retry.
Execution Sample
Angular
const dataSignal = signal(null);
const loadingSignal = signal(false);
const errorSignal = signal(null);

function fetchData() {
  loadingSignal.set(true);
  errorSignal.set(null);
  fetch('/api/data')
    .then(res => res.json())
    .then(data => {
      dataSignal.set(data);
      loadingSignal.set(false);
    })
    .catch(err => {
      errorSignal.set('Failed to load');
      loadingSignal.set(false);
    });
}
This Angular code uses signals to track loading, data, and error states during a fetch call.
Execution Table
StepActionloadingSignalerrorSignaldataSignalUI State
1Call fetchData()truenullnullShow loading spinner
2Fetch startstruenullnullShow loading spinner
3Fetch success response receivedtruenulldata objectStill loading spinner (waiting to update)
4Set dataSignal with datatruenulldata objectStill loading spinner
5Set loadingSignal to falsefalsenulldata objectShow data content
6User triggers fetchData() againtruenulldata objectShow loading spinner
7Fetch failstruenulldata objectShow loading spinner
8Set errorSignal to 'Failed to load'true'Failed to load'data objectShow error message
9Set loadingSignal to falsefalse'Failed to load'data objectShow error message
10User retries fetchData()truenulldata objectShow loading spinner
💡 Loading ends when loadingSignal is false; errorSignal shows error or null; dataSignal holds data or null.
Variable Tracker
VariableStartAfter Step 1After Step 5After Step 8After Step 9After Step 10
loadingSignalfalsetruefalsetruefalsetrue
errorSignalnullnullnull'Failed to load''Failed to load'null
dataSignalnullnulldata objectdata objectdata objectdata object
Key Moments - 3 Insights
Why does the loading spinner show even after data is received but before loadingSignal is set to false?
Because loadingSignal remains true until explicitly set to false (see steps 3-5 in execution_table), the UI shows loading spinner until loadingSignal changes.
Why is errorSignal reset to null when fetchData is called again?
To clear previous errors and show fresh loading state, errorSignal is reset at fetch start (step 1 and 10), so old errors don't persist.
What happens if loadingSignal is never set to false after fetch?
The UI would keep showing the loading spinner indefinitely, blocking data or error display (see exit_note and step 5).
Visual Quiz - 3 Questions
Test your understanding
Look at the execution_table at step 5, what is the UI state?
AShow data content
BShow loading spinner
CShow error message
DShow nothing
💡 Hint
Check the UI State column at step 5 in execution_table.
At which step does errorSignal get set to 'Failed to load'?
AStep 7
BStep 8
CStep 9
DStep 10
💡 Hint
Look at errorSignal column changes in execution_table rows.
If loadingSignal was not set to false after fetch success, what would the UI show?
AShow data content
BShow error message
CShow loading spinner
DShow nothing
💡 Hint
Refer to key_moments about loadingSignal controlling spinner visibility.
Concept Snapshot
Loading states and error patterns in Angular:
- Use signals to track loading, error, and data states.
- Set loading true before fetch, false after.
- Reset error before fetch.
- Show spinner when loading is true.
- Show error message if errorSignal is set.
- Show data when loading is false and no error.
Full Transcript
This Angular example shows how to manage loading and error states using signals. When fetchData is called, loadingSignal is set to true and errorSignal reset to null. The UI shows a loading spinner. On success, dataSignal is set with data and loadingSignal set to false, showing data content. On failure, errorSignal is set with an error message and loadingSignal set to false, showing the error message. Retrying resets errorSignal and loadingSignal to true again. This pattern helps users see clear feedback during data loading and errors.