Angular 下拉菜单赢得';我再也不开门了

Angular 下拉菜单赢得';我再也不开门了,angular,primeng,Angular,Primeng,如果我打开一个Priming下拉列表并选择一个选项,它将不会再次打开。我对代码没有做任何特殊的处理:我动态生成一个读取JSON文件的表单,这是关于下拉列表的部分: <p-dropdown [formControlName]="f.controlName" *ngIf="f.type==='select'" [autoDisplayFirst]="false" [options]="f.values"></p-dropdown> 在我第一次选择下拉列表的值后,尝试再次打开

如果我打开一个Priming下拉列表并选择一个选项,它将不会再次打开。我对代码没有做任何特殊的处理:我动态生成一个读取JSON文件的表单,这是关于下拉列表的部分:

<p-dropdown [formControlName]="f.controlName" *ngIf="f.type==='select'" [autoDisplayFirst]="false" [options]="f.values"></p-dropdown>
在我第一次选择下拉列表的值后,尝试再次打开下拉列表时,控制台上不会显示任何错误,但是,我无法再次打开它

更新

根据答案,这就是我现在要做的:

这是我的HTML

<div *ngFor="let r of mainFields" class="p-grid p-col">
  <div *ngFor="let f of r" [ngClass]="getClass(f.size, f.type)">
  ....
  <p-dropdown [formControlName]="f.controlName" *ngIf="f.type==='select'" [autoDisplayFirst]="false" [options]="f.values" [(ngModel)]="dummyNgModel[f.controlName]"></p-dropdown>

但它仍然不起作用

我认为您没有NgModel标记来绑定并保存到选定的值。这就是为什么当您第一次选择值时。它崩溃是因为没有可绑定的变量

能否提供有关如何构建表单的更多详细信息

我建议您确保formControlName是您构建的表单的一部分:

let form = formBuilder.group({
    ClientIDCodeQualifier: ['']
})
解决方法是引入NgModel值,然后在提交表单时设置存储值:

<p-dropdown [formControlName]="f.controlName" *ngIf="f.type==='select'" [autoDisplayFirst]="false" [options]="f.values" [(ngModel)]="selectedValue"></p-dropdown>

ngOnSubmit() {
   this.form.controls['ClientIDCodeQualifier'].setValue(selectedValue);
}

ngOnSubmit(){
this.form.controls['ClientIDCodeQualifier'].setValue(selectedValue);
}
然后验证表单是否有效。希望有帮助

试试这个

<p-dropdown [options]="cars" [(ngModel)]="selectedCar1">

}

有一个相同的问题,即对话框中的“启动”下拉列表在选择后不会再次打开。
我检查了选项是否仍然有值,它们确实有值。
使用
ngModel
或我的名字没有区别


appendTo=“body”
添加到下拉列表中是我的解决方案。

由于不可能将ngModel与反应性表单一起使用,我如何解决它?ngModel将在p-dropdown标签中使用。不推荐使用ngModel与反应性表单一起使用name Property。您是否能够解决此问题?我现在面临这个问题。
<p-dropdown [formControlName]="f.controlName" *ngIf="f.type==='select'" [autoDisplayFirst]="false" [options]="f.values" [(ngModel)]="selectedValue"></p-dropdown>

ngOnSubmit() {
   this.form.controls['ClientIDCodeQualifier'].setValue(selectedValue);
}
<p-dropdown [options]="cars" [(ngModel)]="selectedCar1">
cars: SelectItem[];
selectedCar1: string;   

constructor() {

    this.cars = [
        {label: 'Audi', value: 'Audi'},
        {label: 'BMW', value: 'BMW'},
        {label: 'Fiat', value: 'Fiat'},
        {label: 'Ford', value: 'Ford'},
        {label: 'Honda', value: 'Honda'},
        {label: 'Jaguar', value: 'Jaguar'},
        {label: 'Mercedes', value: 'Mercedes'},
        {label: 'Renault', value: 'Renault'},
        {label: 'VW', value: 'VW'},
        {label: 'Volvo', value: 'Volvo'}
    ];

}