我有一个显示链接列表的简单组件。应根据权限显示每个链接\ hide。为了获得权限集,我应该使用服务。 这是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>
这是正确的做法吗?还是有更好的方法(最佳做法)呢?
答案 0 :(得分:1)
另一种选择是计算CheckModel::with('settingsval') //get all settingvalues
上的import { Client } from 'elasticsearch';
import { Injectable } from '@angular/core';
@Injectable()
export class ElasticsearchService {
private client: Client;
queryalldocs = {
'query': {
'match_all': {}
}
};
constructor() {
if (!this.client) {
this.connect();
}
}
private connect() {
this.client = new Client({
host: 'http://localhost:9200',
log: 'trace'
});
}
条件,然后将其作为变量而不是函数放在isVisible
上,这可能会导致性能问题(因为它& #39;在摘要周期执行。)
NgOnInit
在您的情况下,我认为这可能会导致性能问题,但请看一下post。