-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 { }