我有一个显示链接列表的简单组件。每个链接都应根据权限显示\隐藏。为了获得权限集,我应该使用服务。这是 HTML 的精简版本:
<a *ngIf=isVisible(10) routerLink=".." [queryParams]="{id:'10'}">bla1</a>
<a *ngIf=isVisible(40) routerLink=".." [queryParams]= "{id:'20'}">bla2</a>
这是组件:
constructor(private reportService : service) {}
ngOnInit() {
this.reportService.GetReportsPermissions().subscribe(result =>
{
this.reportsPersmissions = result;
}, error => { console.log(error)});
}
isVisible(reportTypeID : ReportType) : boolean
{
return typeof this.reportsPersmissions != 'undefined' &&
this.reportsPersmissions.find(rp => rp.ReportType ==
reportTypeID).IsPermitted;
}
问题是当服务还没有响应并且reportsPersmissions 未定义时调用isVisible 函数。我可以想到另一种添加选项
*ngIf= reportsPersmissions
声明为围绕链接列表的容器 div:
<div *ngIf=reportsPersmissions> //Optional - see below
<a *ngIf=isVisible(10) routerLink=".." [queryParams]="{id:'10'}">bla1</a>
<a *ngIf=isVisible(40) routerLink=".." [queryParams]= "{id:'20'}">bla2</a>
</div>
这是正确的方法还是有更好的方法(最佳实践)?