Primeng Autocomplete Angular教程与实例

425 阅读3分钟

在这篇博文中,我们将通过一个例子来学习在Angular中实现Primeng的自动完成功能。

Angular自动完成组件

自动完成是一个用户界面功能,它包含一个输入文本框,允许开发人员输入文本,应用程序搜索并显示输入字符的匹配结果,并给出完整的单词预测列表。

这有助于用户进行搜索和选择,而不是在文本框中输入。

这是每个UI框架提供的基本UI元素。

Primeng提供的是一个angular组件。

首先,使用Angular CLI创建一个Angular应用程序。

你可以查看我之前关于Angular应用程序从头开始生成的文章,以及关于Primeng集成Angular的例子。

这篇文章没有谈及Angular应用程序的结构和Primeng集成。

请在下面找到Primeng的其他教程。

这篇文章的代码适用于Angular 10/11/12/13版本。

对于Primeng框架来说,最新的Angular版本是最好的。

导入AutoCompleteModule模块

Primeng通过AutoCompleteModule ,提供自动完成功能。所以,你必须在你的应用程序模块中导入这个模块。app.module.ts文件。导入自动完成模块并配置NgModule配置的Imports部分

app.module.ts

import { BrowserModule } from '@angular/platform-browser';
import { NgModule, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
import { AppComponent } from './app.component';
import { BrowserAnimationsModule} from '@angular/platform-browser/animations';
import {AutoCompleteModule} from 'primeng/autocomplete';
@NgModule({
  declarations: [
    AppComponent
  ],
  imports: [
    BrowserModule,
    BrowserAnimationsModule,
    AutoCompleteModule, // autocomplete support
  ],
  providers: [],
  bootstrap: [AppComponent],
  schemas:
        [CUSTOM_ELEMENTS_SCHEMA]

})
export class AppModule { }

在应用组件中,需要提供数据以及方法或函数来检查输入的关键字

import { Component } from '@angular/core';
@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})
export class AppComponent {
  numbers: string[] = ['onne','two','three','four','five','six','seven','eight','nine','ten'];
  output: string[];
  constructor(){

  }
  search(event) {
    console.log('event',event);
    this.output = this.numbers.filter(c => c.startsWith(event.query));
}
}

模板HTML变化 - app.component.html

在模板的HTML变化中:

  • 使用ngModel属性配置了双向绑定
  • 还添加了建议属性,用于为输入的查询提供建议列表。
  • 当用户输入一个键时,完整的方法将被触发
  • 它有一个事件参数。查询参数包含键入的关键字。
  • 该方法返回匹配的查询内容列表,并更新建议绑定。

  <div style="text-align:center">
   <h1>
      Primeng Angular AutoComplete Demo
   </h1>
</div>
<div style="text-align:center">
    <p-autoComplete [(ngModel)]="selectNumber" [suggestions]="output" (completeMethod)="search($event)"
    placeholder="Search" [dropdown]="true" ></p-autoComplete>
</div>


输出primeng angular autocomplete example

如何在自动完成组件中添加下拉菜单?

默认情况下,这被设置为false。如果下拉菜单变为 "true",它会在文本框旁边显示一个按钮。

你可以检查配置下拉属性的输出

Angular Primeng Autocomplete dropdown example

如何在自动完成中选择多个元素?

可以通过设置多个属性为真来选择多个值。双向绑定属性也应该是一个字符串数组而不是一个单一的字符串。

即selectNumber: string[]; 而不是selectNumber: string。

 <p-autoComplete [(ngModel)]="selectNumber" [suggestions]="output" (completeMethod)="search($event)"
 placeholder="Search" [dropdown]="true" [multiple]="true" ></p-autoComplete>

请看上面的输出

primeng angular autocomplete multiple values select

如何绑定一个对象和ng-template的例子

我们在上面的例子中看到,简单的字符串可以被填充。

我们也可以使用字段属性来填充对象绑定。

在这个对象中,我们有id、name和department字段。

该对象与名字字段相匹配,并输入了单词。

字段定义了需要显示的对象的标签。

ng-template标签允许该组件显示自定义内容。在这个例子中,显示名字和部门作为自定义模板

app.component.ts

import { Component } from '@angular/core';
@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})
export class AppComponent {
  employee:any;
  employees = [
    {"id": 1, "name": "kiran", "department": "Account"},
    {"id": 2, "name": "john", "department": "Sales"},
    {"id": 3, "name": "frank", "department": "Hr"},
  ];
  employeesResult: Array = [];
  constructor(){
  }
  searchEmps(event): void {
    this.employeesResult = this.employees.filter(c => c.name.startsWith(event.query));

 }
}

app.component.html


  <div style="text-align:center">
   <h1>
      Primeng Angular AutoComplete Object Demo
   </h1>
</div>
<div style="text-align:center">
    <p-autoComplete [(ngModel)]="employee" [suggestions]="employeesResult" (completeMethod)="searchEmps($event)" field="name">
        <ng-template let-employee pTemplate="item">
          {{employee.name}} {{employee.department}}
        </ng-template>
        <ng-template let-employee pTemplate="selectedItem">
            {{employee.name}} {{employee.department}}
        </ng-template>
      </p-autoComplete>

</div>

      



你可以查看输出结果

angular primeng autocomplete object example

总结

你学会了自动完成组件在Angular组件中的集成,并学会了一些功能。