我正在尝试使用angular 2创建一个应用程序,并且在我的应用程序中有一个auth服务,我的html模板是这样的:
<header>
<div *ngIf="isLogin()"><a href="">profile</a></div>
<div *ngIf="!isLogin()"><a href="">register</a></div>
<div *ngIf="!isLogin()"><a href="">signin</a></div>
</header>
**and this is my class :**
@Component({
selector: 'main-menu',
templateUrl: '/client/tmpl/menu.html',
directives: [ROUTER_DIRECTIVES]
})
export class Menu extends Ext {
public items: any;
constructor(private _util: UtilService, private _user: UserService) {
super();
}
public isLogin() {
console.log("test"); <==== my problem is here
return this._user.authorized();
}
}
总是我的功能正在执行!(在我的auth服务中,我有另外一个功能,他们也在运行)!这是用于* ngif内部的功能?? !!! 我担心我的资源,我想知道它的问题与否?
答案 0 :(得分:16)
每次运行Angulars更改检测时,它都会评估所有绑定,因此会调用您的函数来检查视图是否需要更新。
不鼓励在绑定中使用函数。将值分配给组件类的属性并将其绑定到此属性,或使用observables和| async
管道通知Angular有关更改的值。
另一种选择是使用ChangeDetectionStrategy.OnPush
,只有在输入值发生变化时才会运行角度变化检测。