angular - [disabled] 中的函数在注册切换更改之前被触发
问题描述
在我的应用程序中,当组没有更改时,我需要禁用一个按钮。每个组由一些位置和一个布尔值组成returnHome
。我也有原始的一组位置和原始的returnHome
切换设置。以下是它们的组合方式:
为 returnHome 切换滑块 HTML:
<mat-slide-toggle [(ngModel)]="returnHome" (change)="onToggleReturnHome(returnHome)"></mat-slide-toggle>
按钮 HTML:
<button id="save-locations" mat-raised-button color="primary"
[disabled]="hasGroupChanged()">
Save Group
</button>
检查组中更改的功能:
hasGroupChanged() {
// To detect returnHome toggle change
if(this.returnHome != this.originalReturnHome) {
return true;
}
// Code to check if locations of the group have been changed
// ...
}
现在,当我滑动切换开关时,我希望returnHome
它会被更新,一旦它通过 [disabled] 进入hasGroupChanged()
,它会检查它returnHome
是否不再与originalReturnHome
返回相同,从而true
禁用按钮。
onToggleReturnHome()
但是,当我在and上放置断点时hasGroupChanged()
,只要我点击它,hasGroupChanged()
就会首先出现并且不识别 thereturnHome
已更新。因此,按钮永远不会通过切换启用。
我怎样才能确保onToggleReturnHome()
先触发hasGroupChanged()
呢?考虑到 Angular 执行流程,这甚至可能吗?如果没有,我如何确保按钮可以正确禁用/启用?
解决方案
首先,除非你真的必须这样做,否则不要将你的属性与函数挂钩,因为即使没有任何更改,它也会重新渲染,你可以将它挂钩到组件中的变量,并且更改将被拾取通过角度(默认行为),您可以提供功能“onToggleReturnHome”吗?
推荐阅读
- apache-spark - Spark Structured Streaming - 记录查询的内部进度
- python - 身份验证后如何在 django-allauth 中获取 GitHub 用户名?
- c - free(): 执行 free 时下一个大小无效(正常)
- c - 如何打印“%#s”,其中 # 代表空格,但是这个空格量必须根据输入而改变?
- javascript - 在 owl carousel 2 中更改不同大小的项目数
- perl - 搜索和替换文件中的字符串
- scala - akka-http web-app 无法在最小的 docker jre 11(scala12 akka-http 的 java 模块)上启动?
- java - 如何按照 Sonar 清理 Java ThreadLocals?
- reactjs - 如何架构处理 Redux 调度请求的 onSuccess 成为 React Navigation 屏幕更改
- ibm-information-server - 在 unix 框中查看脚本 - 信息服务器