Angular 2全球服务提供商

时间:2017-08-08 19:39:03

标签: angular2-routing angular2-template angular2-forms angular2-services angular2-directives

我是角色的新手2.我已在共享文件夹中定义了我的服务,并在app.module.js提供程序部分添加了这些服务。我使用Behavioral Subject来保存用户状态。当我登录时,我用用户更新我的行为主题,并在侧栏模板中显示用户名。但是当我刷新页面或按ctrl + r然后行为主题回到空用户并在侧栏模板中我的用户名消失。当我刷新页面或按ctrl + r时,我的行为主体没有保持其值。我被困在这里kinldly指导我这里的问题

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

1 个答案:

答案 0 :(得分:0)

当我们刷新页面角度引导应用程序时,由于我的单例再次初始化。因此,我的行为会使数据丢失。