- Angular Material 7 教程
- Angular Material 7 - 首页
- Angular Material 7 - 概览
- 环境设置
- 表单控件
- Angular Material 7 - 自动完成
- Angular Material 7 - 复选框
- Angular Material 7 - 日期选择器
- Angular Material 7 - 表单字段
- Angular Material 7 - 输入框
- Angular Material 7 - 单选按钮
- Angular Material 7 - 选择框
- Angular Material 7 - 滑块
- Angular Material 7 - 切换滑块
- 导航
- Angular Material 7 - 菜单
- Angular Material 7 - 侧边导航
- Angular Material 7 - 工具栏
- 布局
- Angular Material 7 - 卡片
- Angular Material 7 - 分隔线
- Angular Material 7 - 展开面板
- Angular Material 7 - 网格列表
- Angular Material 7 - 列表
- Angular Material 7 - 步骤条
- Angular Material 7 - 标签页
- Angular Material 7 - 树形结构
- 按钮和指示器
- Angular Material 7 - 按钮
- Angular Material 7 - 按钮切换
- Angular Material 7 - 徽章
- Angular Material 7 - 芯片
- Angular Material 7 - 图标
- Angular Material 7 - 进度旋转器
- Angular Material 7 - 进度条
- Angular Material 7 - 水波纹效果
- 弹出窗口和模态框
- Angular Material 7 - SnackBar
- Angular Material 7 - 提示工具
- 数据表格
- Angular Material 7 - 分页器
- Angular Material 7 - 排序标题
- Angular Material 7 - 表格
- Angular Material 7 资源
- Angular Material 7 - 快速指南
- Angular Material 7 - 资源
- Angular Material 7 - 讨论
Angular Material 7 - 自动完成
<mat-autocomplete> 是一个 Angular 指令,用作特殊的输入控件,内置下拉菜单显示与自定义查询匹配的所有可能结果。此控件充当实时建议框,用户在输入区域输入时立即显示。<mat-autocomplete> 可用于提供来自本地或远程数据源的搜索结果。
在本章中,我们将展示使用 Angular Material 绘制自动完成控件所需的配置。
创建 Angular 应用程序
按照以下步骤更新我们在Angular 6 - 项目设置章节中创建的 Angular 应用程序:
步骤 | 描述 |
---|---|
1 | 按照Angular 6 - 项目设置章节中的说明,创建一个名为materialApp的项目。 |
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循环创建选项。
广告