I'm using Angular5 and primeng library. Particularly, I have problem with p-dropdown. I have one big entity - Consignment - with many fields, I open page with this saved object. And several p-dropdown elements(here it is contract component) dont' display selected value. But, I'm sure that there are no object's empty fields. It seems, like array, which linked with p-dropdown options property, is still empty when @Input() field related with p-dropdown ngModel is not. How I can fill in options array before ngModel field will initiated?Or may be there is another problem? My code below: Html template: <div class="form-group ui-float-label"> <p-dropdown [options]="selectItems" [(ngModel)]="contract" [filter]="true" (onChange)="onContractSelect()" [style]="{'width':'100%'}" id="contract" placeholder="Select a contract" [required]="required" ></p-dropdown> <label for="contract" [hidden]="contract == null">Contract</label> </div> Component code: export class SelectContractComponent implements OnChanges{ public contracts : Contract[] = []; @Input() contract: Contract; @Output() contractChange = new EventEmitter(); @Input() contractor: Contractor; selectItems: SelectItem[]= []; @Input() disabled: boolean; @Input() required: boolean; constructor( private contractService: ContractService) { } ngOnChanges(changes: SimpleChanges): void { this.getAllContracts(); const contractor: SimpleChange = changes.contractor; this.selectItems = []; if (contractor != null && contractor.currentValue != null){ this.getContractsByContractor(); } } private fillSelectItems(contract: Contract){ this.selectItems.push({label: contract.name, value: contract}); } getContractsByContractor():void { this.contractService.getContractsByContractor(this.contractor.id) .subscribe(contracts => { this.contracts = contracts; this.contracts.forEach(c => this.fillSelectItems(c)); }); } getAllContracts():void{ this.contractService.getContracts() .subscribe(contracts => { this.contracts = contracts; this.contracts.forEach(c => this.fillSelectItems(c)); }); } public onContractSelect(){ this.contractChange.emit(this.contract); } } Fragment from Consignment template: <app-select-contract [(contract)]="consignment.costPayerContract" [contractor]="consignment.costPayer" *ngIf="consignment.costPayer"></app-select-contract> Continue reading...