Primeng 自动完成 - 不使用 Angular 中的反应形式修补值
Primeng Autocomplete - Not patching the value using reactive form in Angular
我有最新版本的 Angular 并使用 Primeng 的自动完成功能并尝试在使用反应形式搜索匹配结果后修补值,但它没有反映,下面是我的代码:
HTML代码:
<p-autoComplete formControlName="orderId" [suggestions]="orderList"
(completeMethod)="searchOrders($event)" (onSelect)="onOrderChange($event)" filter="label"
field="label" [autoHighlight]="true" [forceSelection]="true" dataKey="value">
</p-autoComplete>
TS代码:
searchOrders(event) {
this._orderService.getOrderList(event.query).subscribe(
success => {
if (success['orders'].length) {
this.orderList = success['orders']
this.formGroup.patchValue({ orderId: { value: '6614876352770211840' } })
}
},
error => {
// handling errors here
}
)
}
我在 orderList
变量中有一个对象数组 ([{value:'', label: ''}])
并且列表在搜索后正确显示在那里。 onOrderChange
方法不影响此逻辑,我还通过传递相关查询单独调用 searchOrders
方法,然后修补该值,我尝试了不同的方法,但它不起作用。
终于得到了解决方案,很简单,但出乎意料。我们需要用 key
和 value
的对象修补字段。这是 Primeng 的自动完成和芯片组件显示预定义值 ({ value: '6614876352770211840', label: 'ORD00459' })
所必需的。
所以例子是:
TS代码:
searchOrders(event) {
this._orderService.getOrderList(event.query).subscribe(
success => {
if (success['orders'].length) {
this.orderList = success['orders']
this.formGroup.patchValue({ orderId: { value: '6614876352770211840', label: 'ORD00459' } })
}
},
error => {
// handling errors here
}
)
}
我有最新版本的 Angular 并使用 Primeng 的自动完成功能并尝试在使用反应形式搜索匹配结果后修补值,但它没有反映,下面是我的代码:
HTML代码:
<p-autoComplete formControlName="orderId" [suggestions]="orderList"
(completeMethod)="searchOrders($event)" (onSelect)="onOrderChange($event)" filter="label"
field="label" [autoHighlight]="true" [forceSelection]="true" dataKey="value">
</p-autoComplete>
TS代码:
searchOrders(event) {
this._orderService.getOrderList(event.query).subscribe(
success => {
if (success['orders'].length) {
this.orderList = success['orders']
this.formGroup.patchValue({ orderId: { value: '6614876352770211840' } })
}
},
error => {
// handling errors here
}
)
}
我在 orderList
变量中有一个对象数组 ([{value:'', label: ''}])
并且列表在搜索后正确显示在那里。 onOrderChange
方法不影响此逻辑,我还通过传递相关查询单独调用 searchOrders
方法,然后修补该值,我尝试了不同的方法,但它不起作用。
终于得到了解决方案,很简单,但出乎意料。我们需要用 key
和 value
的对象修补字段。这是 Primeng 的自动完成和芯片组件显示预定义值 ({ value: '6614876352770211840', label: 'ORD00459' })
所必需的。
所以例子是:
TS代码:
searchOrders(event) {
this._orderService.getOrderList(event.query).subscribe(
success => {
if (success['orders'].length) {
this.orderList = success['orders']
this.formGroup.patchValue({ orderId: { value: '6614876352770211840', label: 'ORD00459' } })
}
},
error => {
// handling errors here
}
)
}