Angular - 如何在更新单个输入时停止触发所有表单字段验证

Angular - How to stop trigger all form field validation when update a single input

我有一个包含以下输入的表单:名字、姓氏、用户名和密码。

我可以使用按钮生成随机密码,在控件中使用 set/patchValue 将触发所有验证(名字、姓氏和用户名),但我只想为我的输入触发验证(密码)

this.userDetailsFormGroup
        .get('password')
        ?.patchValue(usersData.data.toString());

我该怎么做?

确保您的按钮具有 type="button" 属性(当然除了保存按钮),否则它们将触发提交事件,因为按钮的默认 typesubmit。这就是为什么您会在所有字段上收到验证错误。

另一个注意事项:当你更新值时(通过获取 firstName 控件并在其上设置原始值),你可以使用 setValue 而不是 patchValuepatchValue 在您设置“复杂”值并且仅部分更新它时很有用。例如,您可以这样做:

this.userDetailsFormGroup.patchValue({ firstName: usersData.data.toString() });