【问题标题】:Prevent input change from causing form to dirty (Angular 5.2)防止输入更改导致表单变脏(Angular 5.2)
【发布时间】:2018-08-11 06:51:57
【问题描述】:

有没有一种简单的方法可以防止输入控件弄脏其父窗体? 我可以通过构建一个没有 controlValueAccessor 的自定义标签来做到这一点,但我想知道是否有更简单的方法。

在我的一个表单中间,我有一个输入,按钮旁边有一个数字。输入只是指定我想将多少特定类型的项目添加到一组事物中。您指定多少的输入与表单是否应被视为脏无关,因为在单击添加按钮之前,表单没有“更改”,此时一堆项目被添加到集合中并且我传播更改从那里开始。

【问题讨论】:

    标签: angular angular-forms dirty-data


    【解决方案1】:

    如果你使用模板驱动的表单,你可以使用

    [ngModelOptions]="{standalone: true}"
    

    这是专门为您的场景定义的。来自文档:

    独立:默认为 false。如果设置为 true,则 ngModel 不会在其父表单中注册自己,并且会像 不在表格中。如果您有表单元控件,这会很方便, 也就是嵌套在控制显示的标签中的表单元素 表单,但不包含表单数据。

    【讨论】:

    • 你知道如何为响应式表单执行此操作吗?
    • 对于响应式表单,您不需要这样做。只是不要将它放入代码中的表单结构中,也不要为元素分配 formControlName。还是我错过了你的问题的重点?
    • 我想知道输入何时被触摸,但我不希望它们弄脏表单。现在我有一个解决方法(input)="markPristine()",该函数将输入标记为原始。我不知道是否有更简单的方法。
    • 不知道这是否更容易,但您可以将其从表单结构中删除,删除 formControlName,然后手动注意touched。问题是您是否希望该值保留在 formProperty.value 中。
    • @Domenick 如果您已经更改了另一个表单字段,该更改应该提醒原始状态,这可能会导致问题。
    猜你喜欢
    • 2018-02-18
    • 1970-01-01
    • 2017-03-26
    • 2020-08-19
    • 2015-03-26
    • 2023-03-31
    • 2017-04-04
    • 2021-10-27
    • 1970-01-01
    相关资源
    最近更新 更多