The goal BehaviorSubjectis to provide an initial value. It could be nullor something else. If there is no valid initial value (when the user ID is not yet known), it should not be used.
ReplaySubject(1)provides similar behavior (emits the last value when subscribing), but does not have an initial value until it is set using next.
,
private customer: Subject<Object> = new ReplaySubject<Object>(1);