项目

查找组件

ABP商业版的Angular UI引入了一些带有abp-lookup-...选择器前缀的组件。这些组件用于获取关联实体数据。

设置

这些组件位于_@volo/abp.commercial.ng.ui_包中,该包已包含在ABP模板中。因此,只要您的项目是基于这些模板创建的,并且没有删除该包,您就可以使用查找组件。您可以在独立组件中导入这些组件以便使用。

查找HTTP请求

所有查找组件都使用查找请求来获取相关实体记录。由于词法作用域的原因,这些请求必须是箭头函数

@Injectable({
  providedIn: 'root'
})
export class AuthorService {
  getCountryLookup = (input: LookupRequestDto) =>
    this.restService.request<any, PagedResultDto<LookupDto<string>>>({
      method: 'GET',
      url: '/api/app/authors/country-lookup',
      params: { filter: input.filter, skipCount: input.skipCount, maxResultCount: input.maxResultCount },
    },
    { apiName: this.apiName });

  // 为简洁起见,省略了服务的其余部分
}

查找自动补全组件

当关联实体的记录数量未知,或者您希望通过搜索功能提升用户体验时,自动补全是一个不错的选择。虽然并非最佳场景,但下面的国家选择器展示了查找自动补全组件的工作原理:

ABP Angular UI自动补全查找

不要忘记在您的组件中导入LookupTypeaheadComponent,以下是其在模板中的使用方法:

<abp-lookup-typeahead
  cid="author-country-id"
  formControlName="countryId"
  displayNameProp="name"
  [editingData]="selected?.country"
  [getFn]="service.getCountryLookup"
/>

可用属性如下:

  • cid: 查找组件内部表单控件(例如输入框或选择元素)的ID。使表单控件能够响应<label>事件。
  • editingData: 如果正在更新记录,则为关联实体数据。
  • displayNameProp: 更新记录中用作表单控件显示名称的属性。
  • lookupNameProp: 实体中用作选项显示名称的属性。应与查找HTTP请求接口匹配。(默认值:displayName)
  • lookupIdProp: 实体中用作选项唯一键的属性。应与查找HTTP请求接口匹配。(默认值:id)
  • maxResultCount: 显示的最大选项数量。(默认值:10)
  • getFn: 通过HTTP请求获取关联实体记录的函数。由于词法作用域的原因,必须是箭头函数
  • disabled: 此属性允许您禁用/启用查找组件。(默认值:false)

查找选择组件

当关联实体的记录数量较少(通常为固定数量)且不需要搜索时,选择组件是一个不错的选择。下面的国家选择器展示了查找选择组件的工作原理:

ABP Angular UI选择查找

不要忘记在您的组件中导入LookupSelectComponent,以下是其在模板中的使用方法:

<abp-lookup-select
  cid="author-country-id"
  formControlName="countryId"
  displayNameProp="name"
  [getFn]="service.getCountryLookup"
/>

可用属性如下:

  • cid: 查找组件内部表单控件(例如输入框或选择元素)的ID。使表单控件能够响应<label>事件。
  • displayNameProp: 更新记录中用作表单控件显示名称的属性。
  • lookupNameProp: 实体中用作选项显示名称的属性。应与查找HTTP请求接口匹配。(默认值:displayName)
  • lookupIdProp: 实体中用作选项唯一键的属性。应与查找HTTP请求接口匹配。(默认值:id)
  • getFn: 通过HTTP请求获取关联实体记录的函数。由于词法作用域的原因,必须是箭头函数
  • disabled: 此属性允许您禁用/启用查找组件。(默认值:false)
在本文档中