在我的棱角分明navbar
我有一个*ngIf
,而不是登录/退出按钮应显示
*ngIf="!authService.loggedIn()
它使用具有此loggedIn函数的服务,该函数返回true或false
loggedIn() {
return this.http.get('http://localhost:3000/users/validateToken')
.map(res => res.json()).map(data => data.success);
}
这是异步的,我如何让ngIf
等待它?或者我怎样才能得到相同的结果?
答案 0 :(得分:3)
模板中的运行功能是一种不好的做法。您可以拥有一个与用户状态相对应的变量,并将data.success
存储在那里。将异步函数调用ngOnInit
并将结果分配给变量。
ngOnInit() {
return this.http.get('http://localhost:3000/users/validateToken')
.map(res => res.json()).subscribe(data => this.isLoggedIn = data.success);
}
模板就像
*ngIf="isLoggedIn"
等待异步函数的响应怎么样,你不必担心它,如果结果将被分配给变量 - DI机制将检测到该更改并更新模板
建议我想从res.json()
开始,你不是HttpClient
,而是Http
,不推荐使用HttpClient
。使用HttpClientModule
和var config = new MapperConfiguration(cfg =>
{
cfg.CreateMap<Case, FactsCase>()
.ForMember(d => d.Subjects, opt => opt.ResolveUsing(s => s.Persons))
.ForMember(d => d.FinancialReports, o => o.MapFrom(t => t.FinancialReport))
.ForMember(d => d.CaseLogs, opt => opt.ResolveUsing(new CaseLogToFactsResolver()))
.ReverseMap()
.ForMember(d => d.Claim, opt => opt.ResolveUsing(new ClaimCaseLogResolver()))
.ForMember(d => d.Policy, opt => opt.ResolveUsing(new PolicyCaseLogResolver()))
.ForMember(d => d.Persons, opt => opt.ResolveUsing(new PersonResolver()));
}
。
答案 1 :(得分:0)
您可以使用async
管道,因为if request返回一个observable。
*ngIf="!authService.loggedIn() | async"