【问题标题】:PrimeNG patchValue for autocompletePrimeNG patchValue 用于自动完成
【发布时间】:2018-09-10 16:39:54
【问题描述】:

我正在尝试为自动完成动态分配一个值,但它不起作用

HTML

<label for="centerId" class="control-label">Center</label>
                                    <p-autoComplete formControlName="center" id="centerId"  [suggestions]="iCenter" placeholder="Center (required)" (completeMethod)="searchCC($event)" [style]="{'width':'85%'}" [inputStyle]="{'width':'85%'}" field="name" dataKey="id" [dropdown]="true"></p-autoComplete>

界面

export interface ICenter{

   id: string,
   name: string
}

ts

(对于 field="name" dataKey="id" 值相同,所以 id=name)

iCenter: ICenter[];

also confirmed there is a value 
console.log(this.center)
    searchCC(event) {

    this.iCenter = this.iCenter
        .filter(data => data.name.toString()
            .toLowerCase()
            .indexOf(event.query.toString().toLowerCase()) !== -1);

}
 this.ersaForm = this._fb.group({
        center: ['', Validators.required],
    });

 this.ersaForm.patchValue({

            //also tried  center:center
          //also tried center: [itimData.center, itimData.center],
            center: [{ 'field': this.center,'dataKey': this.center}],
            phone: itimData.phone,
            email: itimData.email
        });

***************************************更新********* ****************************************************** ******** 搞定了,方法如下

中心:{id:itimData.center,名称:itimData.center},

【问题讨论】:

  • 标注错误,请指正

标签: angular primeng primeng-dropdowns


【解决方案1】:

属性 'field' 和 'dataKey' 不一定是您的对象的一部分。

PrimeNG 文档:

字段

要解析和显示的建议对象的字段。

数据密钥

用于唯一标识选项中的值的属性。

如果您的列表如下所示:

const items = [
    {id: 1, name: 'Apple'}, 
    {id: 2, name: 'Banana'}, 
    {id: 3, name: 'Pineapple'}
];

那么属性'field'应该引用'name''dataKey'应该引用'id'

现在,如果您想将自动完成的值设置为“Pineapple”,那么 patchValue 如下所示。

this.form.patchValue({
    item: {
        id: 3, // mandatory
        name: 'Pineapple' // optional
    }
});

PrimeNG 组件将搜索 id 等于 3 的对象。当匹配时,他会将选择设置为该对象。

https://www.primefaces.org/primeng/#/autocomplete

【讨论】:

  • 更新了我上面的代码。 (原帖和更新部分)我正在使用接口this.iCenter:{id:itimData.center,名称:itimData.center},它不起作用..请参阅原帖
  • 我应该有这样的中心:{ 'id': itimData.center, 'cost_name': itimData.center },
  • 也试过center: [this.iCenter = [{ id:itimData.center, name:itimData.center }]],没有错误但什么也没发生
  • 更新了我上面的代码。解决了这个问题,但另一个函数坏了
  • 将其标记为答案...因为您让我朝着正确的方向前进 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-11-28
  • 2018-12-28
  • 2018-04-27
  • 1970-01-01
  • 1970-01-01
  • 2017-10-29
  • 1970-01-01
相关资源
最近更新 更多