У меня есть простой компонент, который отображает список ссылок. Каждая ссылка должна отображаться \ скрываться в соответствии с разрешениями. Чтобы получить набор разрешений, я должен использовать сервис.
Это упрощенная версия 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;
}
Проблема в том, что функция isVisible вызывается, когда служба еще не ответила, а reportsPersmissions не определена.
Я мог бы придумать другой вариант добавления
*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>
Это правильный способ сделать это или есть лучший способ (лучшая практика) сделать это?