https://stackblitz.com/edit/primeng-dropdown-demo?file=src%2Fapp%2Fapp.component.html
Cuando envuelvo el siguiente código en el elemento </form, la caída se colapsa.
<h5>Advanced with Templating, Filtering and Clear Icon</h5> <p-dropdown [options]="countries" [(ngModel)]="selectedCountry" optionLabel="name" [filter]="true" filterBy="name" [showClear]="true" placeholder="Select a Country"> <ng-template pTemplate="selectedItem"> <div class="country-item country-item-value" *ngIf="selectedCountry"> <div>{{selectedCountry.name}}</div> </div> </ng-template> <ng-template let-country pTemplate="item"> <div class="country-item"> <div>{{country.name}}</div> </div> </ng-template> </p-dropdown>en primer lugar, use formularios reactivos en lugar de ngModel
form: FormGroup; constructor(private fb: FormBuilder) {} ngOnInit() { this.form = this.fb.group({ country: this.fb.control('') }); }modelo:
<form ngForm="form"> <h5>Advanced with Templating, Filtering and Clear Icon</h5> <p-dropdown [options]="countries" [formControlName]="country" optionLabel="name" [filter]="true" filterBy="name" [showClear]="true" placeholder="Select a Country"> <ng-template pTemplate="selectedItem" let-item> <div class="country-item country-item-value"> <div>{{item.name}}</div> </div> </ng-template> <ng-template let-country pTemplate="item"> <div class="country-item"> <div>{{country.name}}</div> </div> </ng-template> </p-dropdown> </form> y el segundo: no use *ngIf dentro de pTemplate (en realidad, este es el problema principal de la etiqueta colapsada) Aviso por favor:
formControlName en lugar de ngModellet-item dentro de pTemplate para obtener la referencia al elemento seleccionadoReactiveFormsModule a las importaciones