我正在使用用户授权并根据条件转到禁用按钮。
我已经实现了逻辑,但我想知道我是否使用函数而不是内联逻辑可能会影响性能?
我的逻辑如下:
排队:
<button type="button" class="btn btn-primary" [disabled]="!ApplicationManager.Model.CanModifyFramework && ((selectedPage.Scope!='0' && !ApplicationManager.Model.CanModifyConfiguration) || (selectedPage.Scope=='0' && ApplicationManager.Model.CanModifyConfiguration))">Save & Close</button>
功能:
<button type="button" class="btn btn-primary" [disabled]="!GetUserAccessability(selectedPage.Scope)">Save & Close</button>
public GetUserAccessability(scope: any): boolean {
let result: boolean = false;
if (this.Model.CanModifyFramework) {
result = true;
}
else if (this.Model.CanModifyConfiguration && scope>0)
{
result=true
}
return result;
}
答案 0 :(得分:2)
当您绑定到字段而不是方法时,角度变化检测效率最高。
最好使用observable或事件来通知更改,而不是轮询,然后更新事件处理程序中的字段。
另一个好方法是使用ChangeDetectionStrategy.OnPush
并绑定到一个observable。每次发出新值时,| async
管道都会调用ChangeDetectorRef.markForCheck()
。
您可以做的最糟糕的事情是绑定到一个方法,该方法为每个调用返回一个新的对象实例数组。这将使您的应用程序瘫痪。你的方法没有做到这一点,因此并不是那么糟糕。
绑定到字段或Observable
是恕我直言仍然是更好的方式。