提问人:NewKey 提问时间:11/7/2023 最后编辑:NewKey 更新时间:11/8/2023 访问量:48
p-dropdown 不会使用反应式表单手动设置值
p-dropdown doesn't setValue manually with Reactive Form
问:
我尝试在某些服务检索一些信息后手动设置表单,并且我需要再次将值设置回下拉列表(使用 setTimeout 进行实用性)。
旁边是一个普通的选择器,它的工作方式与我的预期一致。我对 p 下拉列表做了同样的事情,我根本不起作用。
它通过 onChange 方法检测到更改,但同样没有任何反应。
https://stackblitz.com/edit/ge9bjb?file=src%2Fapp%2Fdemo%2Fdropdown-reactive-forms-demo.ts
也许它需要一些参考才能工作?<p-dropdown>
答:
1赞
Mouayad_Al
11/8/2023
#1
有一种解决方法可以解决此问题:
- 添加一个模板引用:
<p-dropdown>
#dd
<p-dropdown
#dd
formControlName="city"
[options]="cities"
optionLabel="name"
(onChange)="onChange($event)"
></p-dropdown>
- 用于阅读模板引用:
@ViewChild
@ViewChild('dd') dd:Dropdown
- 添加以下内容以更新模型值:
SetTimeout
setTimeout(() => {
this.cityName?.patchValue(this.cities[1], { onlySelf: true });
this.dd.updateModel(this.cities[1]) // add this line to update model
console.log(this.formGroup.getRawValue().city);
console.log(this.formGroup2.getRawValue().cityName);
}, 2000);
这应该对你很好。
我认为这是由于下拉列表中的信号而发生的 引擎盖下的组件。
modelValue
评论
0赞
NewKey
11/8/2023
它起作用了,谢谢,还在package.json中将“primeng”: “16.7.0” 升级到 “primeng”: “16.7.1” 以修复此错误
评论