2017-02-16 53 views
0

我的代码是这样Angular2中的BehaviorSubject不是第二次设置值?

login.component.ts

loginSucess() { 
    this.MenuService.setUserName(userauthresponce.username); 
} 

MenuService.ts

private usernameSource = new BehaviorSubject<any>(0); 
    setUserName (username) { 
    this.usernameSource.next(username); 
} 

getUserName() { 
    return this.usernameSource.asObservable(); 
    } 

other.component.ts

constructor(MenuService:MenuService) { 

    this.MenuService.getUserName().subscribe(responce => { 
    console.log('username', responce); 
    this.username = responce; 
}); 
    } 

/* it's not working hear*/ 

switchrole() { 
    this.router.navigate(['/dashboard']); 
    this.MenuService.setUserName(this.username); 
} 

我在第一次登录时获取用户名,之后当用户单击切换角色按钮时它正在调用切换角色功能,在此功能中,我必须将该页导航到仪表板,在这种情况下,我将用户名作为0;

即使我设置为从switchrole()的用户名,但是这是不工作

,我没有得到我的错误,请帮我

+0

你在哪里提供'MenuService'? – yurzui

回答

0

尽量不要打电话this.usernameSource.asObservable(),就回到this.usernameSource,你可以订阅直接调用BehaviorSubject,但不能在Observable上调用next;

ex。

private usernameSource = new BehaviorSubject<any>(0); 

setUserName (username) { 
    this.usernameSource.next(username); 
} 

getUserName() { 
    return this.usernameSource; 
} 
相关问题