当我们想使用基于认证的路由守卫时,ReplaySubject就会发挥作用。

    目前在我们的UserService中,isAuthenticated被设置为false,这是不正确的。

    1. private isAuthenticatedSubject = new BehaviorSubject<boolean>(false);

    此时,我们不知道用户是否经过认证,直到我们从服务器请求这些信息。问题是BehaviorSubject需要一个初始值(如true或false)。

    让我们欢迎我们的朋友,ReplaySubject。

    1. private isAuthenticatedSubject = new ReplaySubject<boolean>(1);

    ReplaySubject的一个独特之处在于它可以在没有初始值的情况下被创建。在我们的应用中,我们将isAuthenticatedSubject设置为一个可以存储一个值的ReplaySubject,而这个值还没有被设置。当我们的UserService对用户进行认证时,这个值就会被设置。