Search code examples
rxjsobservablengrxsubject-observer

Getting current state in ngrx


Here is the solution for getting the current state in ngrx. The example is simple - you just use take(1). But in rxjs documentation for take it says:

Returns a specified number of contiguous elements from the start of an observable sequence

How come taking the first value gets the current state (i.e. the last value)?

Also I'm having trouble mocking this behavior in unit tests using Subject.


Solution

  • The ngrx-store is a ReplaySubject of length=1, this means only 1(the latest) value is cached and replayed on subscribe - so take(1) will resolve to the latest value.