I am using below code to update my kendo autocomplete. but it shows [object Object] in UI.
<ng-template kendoGridCellTemplate let-dataItem="dataItem" let-rowIndex="rowIndex">
<kendo-autocomplete #dropDownList [data]="aDirectoryData" [clearButton]="true"
[(ngModel)]="addressDisplayValue[rowIndex]" [disabled]="dataItem.isErroredItem" [allowCustom]="true"
(keyup)="fShippingAddressAutoComplete($event)"
(valueChange)="onValue($event, rowIndex, dataItem)" [value]="[(ngModel)]="addressDisplayValue[rowIndex]"
(click)="fShippingAddress(dropDownValue.value)" (focus)="dropDownList.toggle()">
</kendo-autocomplete>
</ng-template>
addressDisplayValue: string[] = [];
onValue(shippingAdd: IShipToAddresses, rowIndex: number, dataItem: ISalesOrderGroups): void {
this.addressDisplayValue[rowIndex] = '';
const shippingId = 'abcd'
this.addressDisplayValue[rowIndex] = (shippingId + ' ' +
'defgh');
}
However when I use setTimeOut , it works.
setTimeout(() => {
this.addressDisplayValue[rowIndex] = (shippingId + ' ' + 'defgh');
});
I cannot use setTimeOut here due to coding guidelines. Is there an alternate way?
aDirectoryDataprobably contains array of some objects. When it would be converted to string it would be[object Object]. To show some field of an object you can set thevalueFieldproperty as in this example:If you want to use some logic, eg show values of several fields, you can provide a template for the item as in this example: