<pre *ngIf="isAdmin()">{{email|json}} - {{user|json}}</pre>
isAdmin() {
console.log('isAdmin: ', this.bcAuthService.isAdmin());
return this.bcAuthService.isAdmin();
}
isAdmin() {
return this.admins.includes(localStorage.getItem("email"));
}
组件中的功能使打印多次。为什么?这是错的吗?有什么更好的方法?
答案 0 :(得分:2)
模板方法几乎总是会被多次调用。对于*ngFor
来说,要多次迭代也是如此。如果您有执行昂贵调用的操作,则应缓存结果并在方法中返回结果,或使用ngOnInit检索/计算值并将其设置在组件中。
<pre *ngIf="isAdmin">{{email|json}} - {{user|json}}</pre>
export class MyComponent implements OnInit {
isAdmin: boolean;
ngOnInit() {
this.isAdmin = this.bcAuthService.isAdmin();
console.log('isAdmin: ', this.isAdmin);
}
}
答案 1 :(得分:1)
找到此why *ngIf in angular 2 always is executing when use function?
后我通过
解决了问题ngOnInit() {
this.is_admin();
}
is_admin() {
this.isAdmin = this.bcAuthService.isAdmin();
}
<pre *ngIf="isAdmin">{{email|json}} - {{user|json}}</pre>
答案 2 :(得分:0)
现在您没有method(成员),并且它不会发送“ isAdmin:true”垃圾邮件,但这并不意味着问题已得到解决。
您可能对该组件的changeDetection
和ChangeDetectorRef感兴趣
在更改isAdmin
来更新模板(detectChanges)时实际告诉角度。