angular - 如何同时使用 3 个不同的条件来禁用 Angular 7 上的属性
问题描述
我有一个角形式。
<form class="p-16" name="poMaterialDetailForm [formGroup]="poMaterialDetailForm">
在表单中,我有一个保存按钮。
<button mat-raised-button
class="save-poMaterialDetail-button ml-32 mr-8"
[disabled]="poMaterialDetailForm.invalid || poMaterialDetailForm.pristine"
<span>SAVE</span>
</button>
disabled 属性允许我在表单没有更改时禁用按钮。如果表单值发生更改,则保存按钮变为活动状态。
我刚刚添加了用户权限功能,并且对于没有编辑权限的用户也禁用了保存按钮。
<button mat-raised-button
class="save-clientManagementDetail-button ml-32 mr-8"
[disabled]="isDisabled('ClientManagement','Edit')"
*ngIf="pageType ==='edit'" (click)="saveClientManagementDetail()">
<span>SAVE</span>
</button>
现在我想将这两个功能都用于禁用属性。这是我的条件:
[disabled]="(clientManagementDetailForm.invalid || clientManagementDetailForm.pristine)
&& isDisabled('ClientManagement','Edit')"
不幸的是,我无法让这个条件发挥作用。当我单独使用这些条件时,它们会起作用,但是当我尝试同时使用它们时,禁用的属性不会相应地正确更改。
希望条件明确。如果有人能对这个主题有所了解,我将不胜感激。
干杯,约翰尼
解决方案
如果我理解正确,您必须将AND更改为OR:
(clientManagementDetailForm.invalid || clientManagementDetailForm.pristine)
|| isDisabled('ClientManagement','Edit')
因为如果表单无效或用户没有编辑权限,您不需要提交按钮。
推荐阅读
- flutter - Flutter 中 onGenerateRoute 和路由的区别
- haskell - `evaluate`、`rwhnf` 和 `seq` 与它们的“深度”对应物有什么区别?
- flutter - 如何在 Flutter 中更新 pubspec.yaml 文件中的单个包
- mysql - SQL:我的查询中出现错误 1064,我找不到原因
- php - 重新验证响应未提交
- apache-spark - Spark 中的 CachedBatch 是什么?
- ios - 如何在我的控制器中快速添加过渡动画?
- android - 进度条 setProgress 在 UI 线程上不起作用
- javascript - 在材料表单元格角度切换此元素
- java - 无法使用带有 Apache 2.4 FOP 的 Spring boot 2.1.6.RELEASE 编译应用程序