以下代码检查valueChanges上的username
输入。仅在提交后如何检查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>
,我的编辑器(Visual Studio Code)抱怨property 'length' does not exist on type 'unknown'
,唯一的解决方法是在<String>
之后添加filter
类型。
答案 0 :(得分:2)
如果您不介意在提交之前不更新该字段,则可以在表单控件上调用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))
}
但是,在提交之前,表单值不会更新此字段,因此记住这一点很重要。
但是我也看不出为什么如果您需要执行类似的操作,为什么您也不能处理表单函数中的表单控件逻辑。
答案 1 :(得分:1)
解决方案是:
<form name="myForm"> <input ng-model="modelobject" ng-model-options="{updateOn: 'submit'}"> <button id="confirmButton" role="confirm" class="confirm-btn"> Confirm </button> </form>