在一些服务检索到一些信息后,我try 手动设置表单,并且我需要再次设置下拉列表中的值(出于实用性,使用setTimeout).

旁边是一个正常的 Select 器,它的工作与我预期的一样.我对p-DropDown也做了同样的事情--我根本不工作.

它通过onChange方法检测到更改,但同样什么也没有发生.

https://stackblitz.com/edit/ge9bjb?file=src%2Fapp%2Fdemo%2Fdropdown-reactive-forms-demo.ts

也许它需要一些关于<p-dropdown>的参考才能工作?

推荐答案

有一种解决方法可以解决此问题:

  1. <p-dropdown>上添加一个模板引用,如#dd:
    <p-dropdown
      #dd
      formControlName="city"
      [options]="cities"
      optionLabel="name"
      (onChange)="onChange($event)"
    ></p-dropdown>
  1. 使用@ViewChild读取模板引用:
  @ViewChild('dd') dd:Dropdown

  1. 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信号 引擎盖下的部件.

Angular相关问答推荐

如何使ngx-editor的工具栏选项以Angular中的变量或常数形式动态格式化?

Angular 空变量使用组件之间的共享服务

独立组件;依赖项注入

判断哪个Angular 信号导致了影响

代码优化以删除Angular中的嵌套订阅

bootstrap 可折叠菜单在单击时未展开.Angular 应用程序

如何在Angular功能路由保护中取消订阅RxJs主题

如何在 Angular 中每 x 秒从 REST api 加载数据并更新 UI 而不会闪烁?

VS 2022 停留在运行 Angular 应用程序上

如何正确导出/导入枚举和接口文件以便 Jest 成功完成测试?

Observable转换为Observable

ng14中具有强类型表单的FormBuilder

为什么我们需要`ngDoCheck`

如何在 Angular 6 中使用 mouseover 和 mouseout

Angular 2 - 全局 CSS 文件

如何将组件导入Angular 2中的另一个根组件

Angular 2:formGroup 需要一个 FormGroup 实例

在 Angular 组件模板中添加脚本标签

Angular2动态改变CSS属性

如何将 @Input 与使用 ComponentFactoryResolver 创建的组件一起使用?