问题描述
在某些情况下,我有一个要禁用的按钮,因此我已配置了disable属性以从函数结果中获取其值。我发现的问题是,如果将console.log
放在函数中,我可以看到它正在循环运行。正常吗可能与changeDetectionStrategy有关吗?
模板按钮代码
<button mat-raised-button color="primary" (click)="documentEditForm.ngSubmit.emit()"
[disabled]="deshabilitarBotonGuardar()">Guardar</button>
n = 0
deshabilitarBotonGuardar(){
this.n++
console.log('Esto viene del control de habilitación del botón Guardar:' + this.n)
if(this.form.invalid ||
this.guardadoDB ||
this.ds.modeForm == estadoFormulario.registroMostrar ||
this.isSaving){
return true;
} else {
return false;
}
}
更新
我发现了问题,我有两个时间间隔来计算会话时间和令牌时间。为了跟踪它们,我将两个时间间隔的结果每秒存储在我的authenticationService中的两个变量中。我删除了这些间隔,现在该功能仅在发生更改时运行。
问题在于这些变量每隔一秒钟就会发生变化并触发角度变化检测。
解决方法
是的,这很正常。因为每次在渲染短语中都调用此函数。尽量不要对组件属性中使用的函数使用复杂的代码。
,它不是完全在“循环”中运行,但是您正确地认为这是由于更改检测。您可能会考虑切换到ngOnChanges生命周期挂钩以检查您的禁用状态。这样,您不再需要在模板中引用方法。