angular - 如何仅在提交时检查 formControl 值?
问题描述
以下代码检查username
valueChanges 上的输入。username
仅在提交后如何检查输入?(即,等待一个submit
事件,并且不检查每个 valueChange?)
this.formCtls['username'].valueChanges.pipe(
filter<String>(text=>text.length > 2),
debounceTime(10),
distinctUntilChanged(),
. . .
此外,一个次要问题可能不够重要,无法单独作为一个全新的问题打开。. . : 如上所述,为什么我的编辑强迫我在<String>
旁边添加泛型filter
?我在网上看到了几个代码片段,只有:
this.formCtls['username'].valueChanges.pipe(
filter(text=>text.length > 2),
debounceTime(10),
distinctUntilChanged(),
但是没有. <String>
_ property 'length' does not exist on type 'unknown'
_<String>
filter
解决方案
如果您不介意在提交之前更新该字段,您可以调用updateOn: submit
表单控件,例如:
constructor(private fb: FormBuilder) {
this.myForm = this.fb.group({
field1: ['', { updateOn: 'submit'}]
})
this.myForm.get('field1').valueChanges.pipe(
filter(text=>text.length > 2),
)
.subscribe(val => console.log(val))
}
但是有了这个,表单值在提交之前不会更新这个字段,所以记住这一点很重要。
但我也不明白为什么你不能在提交函数中处理表单控件的一些逻辑,如果你需要做类似的事情。
推荐阅读
- python - Shapely contains(point) 总是给出 False
- c# - 谷歌地图步行路线请求返回交通信息错误
- react-native - 使用 react-native init 项目反应原生太多问题
- c++ - C++中类字符串的内部结构
- jquery - 使用哈希时如何为当前页面添加任何特定类
- laravel - Laravel 护照申请如何处理内部请求
- ios - 无法将 CAGradientLayer 应用为 UITableView 背景视图
- powershell - 使用 KPScript 生成随机密码
- reactjs - 如何将 Astroturf 与 Create React App 一起使用?
- javascript - 如何发送推送通知 crome android 移动设备 pwa