-1

私はアンギュラ2に新しいです。私のサービスを共有フォルダに定義し、これらのサービスをapp.module.jsプロバイダセクションに追加しました。私はユーザの状態を保存するために行動主題を使用しています。私がログインすると、私の行動主題をユーザーに更新し、サイドバーテンプレートにユーザー名を表示します。しかし、私のページをリフレッシュするか、Ctrl + rを押すと、ビヘイビアサブジェクトが空のユーザーに戻り、サイドバーテンプレートでユーザー名が消えます。私の行動主体は、ページをリフレッシュしたり、Ctrl + rを押してもその価値を維持していません。いただきました!問題はここに角2のグローバルサービスプロバイダ

UserService:- 

private currentUserSubject = new BehaviorSubject<User>(new User()); 

public currentUser = this.currentUserSubject.asObservable().distinctUntilChanged(); 

private isAuthenticatedSubject = new BehaviorSubject<boolean>(false); 
public isAuthenticated = this.isAuthenticatedSubject.asObservable(); 

loginUser(email, password): Observable<User> { 
     const route = '/login' 
     return this.apiService.post('/user' + route, {email, password}) 
      .map(
       data => { 
        this.saveUser(data.user); 
        return data; 
       } 
      ); 
    } 

saveUser(user: User) { 
     this.currentUserSubject.next(user); 
     this.isAuthenticatedSubject.next(true); 
} 

In SideBarComponent:-- 

export class SideBarComponent implements OnInit { 
user: User; 
constructor(private userService: UserService, 
       private router: Router) { 

     this.userService.currentUser.subscribe(
      (userData) => { 
       this.user = userData; 
      } 
     ) 
    } 
} 

app.module.ts: 

@NgModule({ 
    imports:  [ 
     BrowserModule, 
     RouterModule.forRoot(AppRoutes), 
     SidebarModule, 
     NavbarModule, 
     FooterModule, 
     SharedModule, 

    ], 
    declarations: [ 
     AppComponent, 
     AdminLayoutComponent, 
     AuthLayoutComponent, 
    ], 

    providers: [UserService], 
    bootstrap: [ AppComponent ] 
}) 
export class AppModule { } 

答えて

0

我々は、この私のシングルトンによるページの角ブートストラップアプリケーションが再び初期化リフレッシュしたとき、私は私を導いkinldlyここstucked取得しています。そのため、私の行動主題はデータを失った。