【发布时间】:2017-11-01 20:39:24
【问题描述】:
我们有一个基于模板的表单,它使用各种 Angular Material 控件(matInput、mat-select 等)。我们想为某些用户创建一个“只读”类型的视图。我的直接想法是简单地检查用户的权限,然后遍历所有表单控件并在需要时将它们设置为禁用。
这似乎适用于文本输入类型控件,但不适用于选择和复选框。另外,这会使我们不需要的控件变灰。
关于如何最好地实现这一点的任何想法?也许以某种方式禁用表单中的键盘和鼠标输入可能是我们想要的,但我不知道该怎么做。
【问题讨论】:
-
不要不尝试禁用输入。你有写作的想法,但你需要做更多的工作才能使选择和收音机工作。尝试
*ngIf并根据表单的状态呈现不同的控件。至于外观如何,可以调整。 -
问题是我们的表单非常复杂,可以有无数的属性。为每个控件手动构建条件是不现实的。我需要一种通用方法,可以应用于具有任意数量的控件和控件类型的任何表单。
-
我的建议是将每个控件包装在一个公开更高级别 API 的组件中。例如,您可以公开
readonly属性、model属性和input-type属性。 -
也就是说,我建议你看看像 ng2formly 这样的东西。
-
@AluanHaddad 你说'不要试图禁用输入'。这是为什么呢?