angular服务中使用模版html,我应该如何使用Angular 4中的组件的HTML模板中的服务中的BehaviorSubject类?...

我有一个用于认证的服务,暴露了类BehaviorSubject的用户。 我想使用组件中的服务来允许登录/注销并显示用户属性....在那里没有什么新东西。我应该如何使用Angular 4中的组件的HTML模板中的服务中的BehaviorSubject类?

我知道我可以订阅组件中的用户对象,并将结果分配给本地对象,这反过来我将在视图中使用。但我有兴趣知道如何使用它,而不需要在打字稿中订阅,但是直接在html中,我想这要感谢异步管道。

这些都是伪类,我会用:

auth服务

export class User {

id: string;

username: string;

gender: string;

constructor(some params...) {

// set all the attributes...

}

}

@Injectable()

export class AuthService {

private _currentUser: BehaviorSubject = new BehaviorSubject(null);

get currentUser() {

// do some logic here if needed

return this._currentUser;

}

constructor() {}

login(email, password) {

DoSomeHttpRequestToLogin()

.then(userParams => {

const user = new User(userParams);

this._currentUser.next(user);

})

.catch(error => {});

}

}

组件

@Component({

selector: 'app-main',

templateUrl: './main.component.html'

})

export class MainComponent implements OnInit {

notWhatIWantToUse_User: User;

currentUser$: ????

constructor(private _authService: AuthService) {

// With subscription, which I'd like to avoid

this.authService.currentUser.subscribe(user => {

this.notWhatIWantToUse_User = user;

}

// Without subscription, my goal

this.currentUser = this.authService.currentUser;

}

ngOnInit() {

this.authService.login();

}

}

main.component.html

First Method: Hello {{ notWhatIWantToUse_User?.username }}

Second Method: Hello {{ ... some code with currentUser$ to show username, or id or gender... }}

如何使第二种方法有效?

这种情况下的最佳做法是什么?

如何使用'share()'来避免重复 隐式订阅?

感谢您的帮助

+0

请注意,除非您确实需要外部类修改它们,否则通常只会公开'Observable'而不是'Subject'。 –

+0

感谢您的建议! –

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值