自动完成

输入框自动完成功能。

如何使用

非内置模块,需要额外在 json-schema 注册 withAutoCompleteWidget

数据源说明

静态

指获取后每一次筛选是通过 filterOption 过滤,数据来源于 asyncDataenum

schema.format: 'email' 时自动渲染为自动补全邮箱后缀,默认 ['qq.com', '163.com', 'gmail.com', '126.com', 'aliyun.com'] 可通过 enum 来重新调整该值或全局配置 uiEmailSuffixes

实时

指获取后每一次筛选是通过 filterOption 过滤,数据来源于 asyncData

代码演示

基础样例

最简单的用法。

expand code expand code
import { Component, inject } from '@angular/core';
import { of } from 'rxjs';

import { DelonFormModule, SFSchema } from '@delon/form';
import type { SFAutoCompleteWidgetSchema } from '@delon/form/widgets/autocomplete';
import { NzMessageService } from 'ng-zorro-antd/message';

@Component({
  selector: 'form-autocomplete-simple',
  template: `<sf [schema]="schema" (formSubmit)="submit($event)" />`,
  standalone: true,
  imports: [DelonFormModule]
})
export class FormAutocompleteSimpleComponent {
  private readonly msg = inject(NzMessageService);
  schema: SFSchema = {
    properties: {
      format: {
        type: 'string',
        title: 'Format',
        format: 'email'
      },
      widget: {
        type: 'string',
        title: '指定widget',
        ui: {
          widget: 'autocomplete',
          type: 'email'
        } as SFAutoCompleteWidgetSchema
      },
      async: {
        type: 'string',
        title: '异步',
        ui: {
          widget: 'autocomplete',
          debounceTime: 100,
          asyncData: input =>
            of(
              input
                ? [
                    { label: input, value: 1, otherData: 1 },
                    { label: input + input, value: 2 }
                  ]
                : []
            ),
          change: (comp, data) => console.log(comp, data)
        } as SFAutoCompleteWidgetSchema,
        default: 'asdf'
      }
    }
  };

  submit(value: {}): void {
    this.msg.success(JSON.stringify(value));
  }
}

API

schema属性

成员说明类型默认值
[enum]静态数据源SFSchemaEnumType[]-
[readOnly]禁用状态boolean-

ui属性

成员说明类型默认值
[asyncData]实时数据源(input: string) => Observable<SFSchemaEnumType[]>-
[size]大小,等同 nzSizestring-
[placeholder]在文字框中显示提示讯息string-
[filterOption]是否根据输入项进行筛选,默认只对 label 属性执行不区分大小定 indexOf 过滤。当其为一个函数时,会接收 inputValue option 两个参数,当 option 符合筛选条件时,应返回 true,反之则返回 falseboolean or (inputValue: string, option: SFSchemaEnum) => booleantrue
[type]模式,自动完成常见邮箱后缀,可以重新使用 enum 来指定新后缀email-
[debounceTime]去抖时间,当实时数据源时默认最少 50,单位:毫秒number0
[defaultActiveFirstOption]是否默认高亮第一个选项booleantrue
[backfill]使用键盘选择选项的时候把选中项回填到输入框中booleanfalse
[nzWidth]自定义宽度单位 pxnumber触发元素宽度
[change]变更回调(item: NzAutocompleteOptionComponent, orgData: SFSchemaEnum) => void-
[overlayClassName]下拉根元素的类名称string-
[overlayStyle]下拉根元素的样式object-
[compareWith]SelectControlValueAccessor 相同(o1: any, o2: any) => boolean(o1: any, o2: any) => o1===o2
Loading...