ng2-自动完成反应式上的默认选择

时间:2018-08-01 07:26:24

标签: angular autocomplete angular-reactive-forms

我在Angular 5应用程序上使用https://www.npmjs.com/package/ng2-auto-complete,这就是我的输入工作方式

HTML:

<input
          id="shipper"
          type="text"
          class="form-control"
          formControlName="shipper"
          auto-complete
          [source]="searchShipper.bind(this)"
          value-formatter="name"
          list-formatter="(id) name"
          (valueChanged)="onShipperSelected($event)"
          autocomplete="off"
        />

现在我需要选择一个默认值而不使用[[ngModel)],因为它已不推荐与Angular 6中的formControlName一起使用。它在我使用时可以使用:

[(ngModel)]="defaultValue"

,当我尝试使用patchValue设置默认值时:

const obj = {id: '1', name: 'test'};

this.form.patchValue({
  shipper: obj.toString()
});

const obj = {id: '1', name: 'test'};

this.form.patchValue({
  shipper: obj
});

它在输入字段上显示[object Object], 有什么办法可以解决此问题吗?

1 个答案:

答案 0 :(得分:1)

我认为您误解了value-formatter的目的。这是来自docs的示例:

myValueFormatter(data: any): string {
  return `(${data[id]}) ${data[value]}`;
}

如果要定义要显示的对象属性,则应改用display-property-name

这是工作中的example