title: Observable subscribe method only getting called once
body: <p>I'm building a simple angular application in which I want a service to hold some state. My first attempt at this was just a boolean loggedIn. Basically, I want a navbar component to subscribe to this value so that when its false it shows a 'login' option and when its true show an 'admin' button. </p>
  
  <p>My service:</p>
  
  <pre><code>@Injectable()
  export class AuthService {
    private _loggedIn = new BehaviorSubject(false);
    public readonly loggedIn$ = this._loggedIn.asObservable();
  
    constructor(private http: Http, private router: Router) { 
      this._loggedIn = new BehaviorSubject(false);
    }
  
    public login(u: User): Observable&lt;any&gt; {
      let obs = this.http.post(ApiRoutes.login, u).map(res =&gt; res.json());
  
      obs.subscribe(res =&gt; {
        this._loggedIn.next(res.success);
  
        if (this._loggedIn.getValue())
          this.router.navigate(['/admin']);
      });
  
      return obs;
    }
  }
  </code></pre>
  
  <p>In my nav component:</p>
  
  <pre><code>@Component({
    selector: 'app-nav',
    templateUrl: './nav.component.html',
    styleUrls: ['./nav.component.scss'],
    providers: [AuthService]
  })
  export class NavComponent implements OnInit {
    loggedIn: boolean;
  
    constructor(private as: AuthService) { }
  
    ngOnInit() {
      this.as.loggedIn$.subscribe(isLoggedIn =&gt; {
        this.loggedIn = isLoggedIn;
        console.log('from nav ' + isLoggedIn);
      }, err =&gt; {
        console.log(err);
      }, () =&gt; {
        console.log('complete');
      });
    }
  
  }
  </code></pre>
  
  <p>Right now I see console output when the app starts up but not after login returns. Why does the subscribe function in the nav component only get called once (the page does navigate to /admin so I know the subscribe in the service is being called)? Does this have to do with hot/cold observables? I've tried using things like .publishLast().refCount() but to no avail.</p>