我正在使用Material Design和ReactiveForms开发Angular6应用程序,但在获取验证/绑定以在Material自动完成控件上工作时遇到了一些麻烦。
据我所知,我需要[formControl]
来绑定我的值,并且需要formControlName='countryid'
结合required
属性来进行反应式验证。
问题是,由于某种原因,我可以使查找工作正常进行或进行验证,但不能同时进行。我很确定这与提到的属性和基础绑定有关,但我只是没有看到问题。我尝试了不同的组合和解决方法,但无济于事。
有人看到我搞砸了吗?预先感谢。
答案 0 :(得分:1)
在堆叠闪电战中,您的app.module.ts
中缺少一些进口商品,在我审核之前,必须解决这些进口商品。
我也不确定app.component.html
中包含什么内容,因此我将其注释掉,然后在其中调用了<m-add-place></m-add-place>
选择器,因为我认为这是您希望某人关注的内容。
您的第一期是[formControl]="countryAutoCompleteControl" formControlName="countryid"
...
它们都是FormControls
,而您实际上是将两个FormControls
分配给同一输入。
countryAutoCompleteControl
是作为类变量创建的独立FormControl
。countryid
是FormControl
内的addPlaceForm
我从删除[formControl]="countryAutoCompleteControl"
开始,因为您不需要它。我也从您的输入中删除了required
,因为它也是不需要的...您已经在这里countryid: ['', Validators.required]
<input matInput formControlName="countryid" type="text" placeholder="Pick one"
aria-label="Number" [matAutocomplete]="auto">
在您的ngOnInit
中将其更改为此以执行相同的操作..仅使用countryid
中的addPlaceForm
// this.countryAutoComplete = this.countryAutoCompleteControl.valueChanges.pipe(
this.countryAutoComplete = this.addPlaceForm.get('countryid').valueChanges.pipe(
Stackblitz
https://stackblitz.com/edit/angular-qy4nrm?embed=1&file=src/app/addplace/addplace.component.ts