- 角度材质 7 教程
- Angular Material 7 - 主页
- Angular 材料 7 - 概述
- 环境设置
- 表单控件
- Angular Material 7 - 自动完成
- Angular 材质 7 - 复选框
- Angular Material 7 - 日期选择器
- Angular Material 7 - 表单字段
- 角度材质 7 - 输入
- Angular Material 7 - 单选按钮
- 角度材质 7 - 选择
- 角度材料 7 - 滑块
- Angular Material 7 - 切换滑块
- 导航
- Angular 材质 7 - 菜单
- Angular Material 7 - 侧面导航
- Angular Material 7 - 工具栏
- 布局
- 角度材料 7 - 卡片
- 角度材料 7 - 分隔线
- Angular Material 7 - 扩展面板
- Angular Material 7 - 网格列表
- Angular 材质 7 - 列表
- 角度材料 7 - 步进器
- Angular Material 7 - 选项卡
- 角度材质 7 - 树
- 按钮和指示灯
- 角度材质 7 - 按钮
- Angular Material 7 - 按钮切换
- Angular Material 7 - 徽章
- 角材料 7 - 芯片
- Angular Material 7 - 图标
- Angular Material 7 - 进度旋转器
- Angular Material 7 - 进度条
- 角度材质 7 - 波纹
- 弹出窗口和模态窗口
- Angular Material 7 - SnackBar
- Angular Material 7 - 工具提示
- 数据表
- Angular Material 7 - 分页器
- Angular Material 7 - 排序标题
- 角材料 7 - 表格
- Angular Material 7 资源
- Angular Material 7 - 快速指南
- Angular Material 7 - 资源
- Angular Material 7 - 讨论
Angular Material 7 - 自动完成
<mat-autocomplete>是一个 Angular 指令,用作带有内置下拉列表的特殊输入控件,用于显示自定义查询的所有可能匹配项。一旦用户在输入区域中键入内容,该控件就会充当实时建议框。<mat-autocomplete>可用于提供来自本地或远程数据源的搜索结果。
在本章中,我们将展示使用 Angular Material 绘制自动完成控件所需的配置。
创建角度应用程序
按照以下步骤更新我们在Angular 6 - 项目设置章节中创建的 Angular 应用程序 -
步 | 描述 |
---|---|
1 | 创建一个名为materialApp的项目,如Angular 6 - 项目设置一章中所述。 |
2 | 修改app.module.ts、app.component.ts、app.component.css和app.component.html,如下所述。保持其余文件不变。 |
3 | 编译并运行应用程序以验证实现逻辑的结果。 |
以下是修改后的模块描述符app.module.ts的内容。
import { BrowserModule } from '@angular/platform-browser'; import { NgModule } from '@angular/core'; import { AppComponent } from './app.component'; import {BrowserAnimationsModule} from '@angular/platform-browser/animations'; import {MatAutocompleteModule,MatInputModule} from '@angular/material'; import {FormsModule, ReactiveFormsModule} from '@angular/forms'; @NgModule({ declarations: [ AppComponent ], imports: [ BrowserModule, BrowserAnimationsModule, MatAutocompleteModule, MatInputModule, FormsModule, ReactiveFormsModule ], providers: [], bootstrap: [AppComponent] }) export class AppModule { }
以下是修改后的 HTML 主机文件app.component.html的内容。
<form class = "tp-form"> <mat-form-field class = "tp-full-width"> <input type = "text" placeholder = "US State" aria-label = "Number" matInput [formControl] = "myControl" [matAutocomplete] = "auto"> <mat-autocomplete #auto = "matAutocomplete"> <mat-option *ngFor = "let state of states" [value] = "state.value"> {{state.display}} </mat-option> </mat-autocomplete> </mat-form-field> </form>
以下是修改后的 CSS 文件app.component.css的内容。
.tp-form { min-width: 150px; max-width: 500px; width: 100%; } .tp-full-width { width: 100%; }
以下是修改后的 ts 文件app.component.ts的内容。
import { Component } from '@angular/core'; import { FormControl } from "@angular/forms"; @Component({ selector: 'app-root', templateUrl: './app.component.html', styleUrls: ['./app.component.css'] }) export class AppComponent { title = 'materialApp'; myControl = new FormControl(); states; constructor(){ this.loadStates(); } //build list of states as map of key-value pairs loadStates() { var allStates = 'Alabama, Alaska, Arizona, Arkansas, California, Colorado, Connecticut, Delaware,\ Florida, Georgia, Hawaii, Idaho, Illinois, Indiana, Iowa, Kansas, Kentucky, Louisiana,\ Maine, Maryland, Massachusetts, Michigan, Minnesota, Mississippi, Missouri, Montana,\ Nebraska, Nevada, New Hampshire, New Jersey, New Mexico, New York, North Carolina,\ North Dakota, Ohio, Oklahoma, Oregon, Pennsylvania, Rhode Island, South Carolina,\ South Dakota, Tennessee, Texas, Utah, Vermont, Virginia, Washington, West Virginia,\ Wisconsin, Wyoming'; this.states = allStates.split(/, +/g).map( function (state) { return { value: state.toUpperCase(), display: state }; }); } }
结果
验证结果。
细节
首先,我们创建了一个输入框,并使用 [matAutocomplete] 属性绑定了一个名为auto的自动完成功能。
然后,我们使用 mat-autocomplete 标签创建了一个名为auto的自动完成功能。
接下来,使用 *ng For 循环创建选项。