Building enterprise Angular applications often starts with the same pattern: fetching raw data objects from a REST API and storing them directly in application state.
However, as applications grow, treating state as passive data containers causes business logic to bleed across components, pipes, and utility files. In this article, we’ll explore how to transform raw data into Smart Objects inside an NgRx SignalStore using Object Enrichment—and how to overcome Angular's Dependency Injection constraints cleanly using runInInjectionContext.
Want to skip straight to the code? You can explore the full, working implementation in the GitHub Repository or test the live reactivity directly below:
GitHub Repository: mehdi985/stackblitz-starters-cat5gpwk
1. The Passive Data Problem






