在本教程中,我们将通过示例使用Angular 10材质构建模式弹出窗口。
在这里,我们将研究创建Angular 10项目,安装和设置Angular 10材质,以及创建自定义材质模块文件。

在本教程中,我们将通过示例使用Angular 10材质构建模式弹出窗口。

Angular Material提供了现代UI组件,用于基于可在Web源码,移动和桌面上使用的材料设计规范来构建用户界面。

步骤1:建立Angular 10专案

打开一个新的命令行界面并运行以下命令:

  1. $ ng new angular-modal-example

步骤2:安装和设置Angular 10材质

导航到项目的文件夹内,hammerjs并按如下所示进行安装:

  1. $ cd angular-modal-example
  2. $ npm install --save hammerjs

Hammer.js添加了对触摸支持的支持。

接下来,使用以下命令安装Angular材质和Angular动画:

  1. $ npm install --save @angular/material @angular/animations @angular/cdk

现在,包括hammerjsangular.json文件中。

步骤3:创建自定义材料模块文件

导航到src / app文件夹,创建一个名为material.module.ts的模块文件:

  1. $ cd src/app
  2. $ touch material.module.ts

打开src / app / material.module.ts文件并如下更新:

  1. import { NgModule } from '@angular/core';
  2.  
  3. import { MatDialogModule, MatFormFieldModule, MatButtonModule, MatInputModule }
  4. from '@angular/material';
  5. import { FormsModule } from '@angular/forms';
  6.  
  7. @NgModule({
  8. exports: [FormsModule, MatDialogModule, MatFormFieldModule, MatButtonModule, MatInputModule]
  9. })
  10. export class MaterialModule {}

步骤4:导入主题和材质图标

Angular Material提供了许多预先构建的主题。打开styles.css文件并添加:

  1. @import '~@angular/material/prebuilt-themes/indigo-pink.css';

接下来打开index.html文件并添加:

  1. <link rel="stylesheet" href="https://fonts.googleapis.com/icon?family=Material+Icons">

接下来,打开src / app / app.module.ts文件并导入material.module.tsBrowserAnimationsModule

  1. import { BrowserModule } from '@angular/platform-browser';
  2. import { NgModule } from '@angular/core';
  3. import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
  4. import { MaterialModule } from './material.module';
  5.  
  6. import { AppComponent } from './app.component';
  7.  
  8. @NgModule({
  9. declarations: [AppComponent],
  10. imports: [BrowserModule, BrowserAnimationsModule, MaterialModule],
  11. providers: [],
  12. bootstrap: [AppComponent]
  13. })
  14. export class AppModule {}

步骤5:实施Angular 10材质模态对话框

现在,打开SRC / app.component.ts文件,并导入MatDialogMatDialogRefMAT_DIALOG_DATA

  1. import { Component, Inject } from '@angular/core';
  2. import {MatDialog, MatDialogRef, MAT_DIALOG_DATA} from '@angular/material';
  3.  
  4. interface DialogData {
  5. email: string;
  6. }
  7.  
  8. @Component({
  9. selector: 'app-root',
  10. templateUrl: './app.component.html',
  11. styleUrls: ['./app.component.css']
  12. })
  13. export class AppComponent {
  14. }

接下来,通过从项目网站源码的根目录运行以下命令来创建Angular组件:

  1. ng generate component modal --module app --spec=false

打开src / app / modal / modal.component.ts文件并如下更新:

  1. import { Component, OnInit, Inject } from '@angular/core';
  2. import { MatDialogRef, MAT_DIALOG_DATA} from '@angular/material';
  3.  
  4. interface DialogData {
  5. email: string;
  6. }
  7.  
  8. @Component({
  9. selector: 'app-modal',
  10. templateUrl: './modal.component.html',
  11. styleUrls: ['./modal.component.css']
  12. })
  13. export class ModalComponent implements OnInit {
  14.  
  15. constructor(
  16. public dialogRef: MatDialogRef<modalcomponent>,
  17. @Inject(MAT_DIALOG_DATA) public data: DialogData) {}
  18.  
  19. onNoClick(): void {
  20. this.dialogRef.close();
  21. }
  22.  
  23. ngOnInit() {
  24. }
  25. }

打开src / app / modal / modal.component.html文件并添加以下标记:

  1. <h1 mat-dialog-title>Want to receive our emails?</h1>
  2. <div mat-dialog-content>
  3. <p>What's your email?</p>
  4. <mat-form-field>
  5. <input matInput [(ngModel)]="data.email">
  6. </mat-form-field>
  7. </div>
  8. <div mat-dialog-actions>
  9. <button mat-button (click)="onNoClick()">No</button>
  10. <button mat-button [mat-dialog-close]="data.email" cdkFocusInitial>Yes</button>
  11. </div>

接下来,打开src / app / app.component.ts文件并如下更新:

  1. import { Component, Inject } from '@angular/core';
  2. import { MatDialog, MatDialogRef, MAT_DIALOG_DATA } from '@angular/material';
  3. import { ModalComponent } from './modal/modal.component';
  4.  
  5. @Component({
  6. selector: 'app-root',
  7. templateUrl: './app.component.html',
  8. styleUrls: ['./app.component.css']
  9. })
  10. export class AppComponent {
  11. email: string;
  12.  
  13. constructor(public dialog: MatDialog) {}
  14.  
  15. openDialog(): void {
  16. const dialogRef = this.dialog.open(ModalComponent, {
  17. width: '300px',
  18. data: {}
  19. });
  20.  
  21. dialogRef.afterClosed().subscribe(result => {
  22. this.email = result;
  23. });
  24. }
  25. }

首先,我们将模态组件导入src / app / app.component.ts文件。接下来,我们定义了openDialog()打开ModalComponent

当用户关闭模式组件时,该App组件接收在中输入的电子邮件的值ModalComponent

接下来,打开src / app / app.component.html文件和以下标记:

  1. <div>
  2.  
  3. <button mat-raised-button (click)="openDialog()">Open modal</button>
  4.  
  5. <br />
  6. <div *ngIf="email">
  7. You signed up with: <p></p>
  8. </div>
  9. </div>

打开src / app / app.module.ts文件,并将模态组件添加entryComponents到模块数组中,如下所示:

  1. import { BrowserModule } from '@angular/platform-browser';
  2. import { NgModule } from '@angular/core';
  3. import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
  4. import { MaterialModule } from './material.module';
  5.  
  6. import { AppComponent } from './app.component';
  7. import { ModalComponent } from './modal/modal.component';
  8.  
  9. @NgModule({
  10. declarations: [AppComponent, ModalComponent],
  11. imports: [BrowserModule, BrowserAnimationsModule, MaterialModule],
  12. providers: [],
  13. bootstrap: [AppComponent],
  14. entryComponents: [ModalComponent]
  15. })
  16. export class AppModule {}

而已。现在,让我们通过从终端提供Angular应用程序来测试模态对话框:

隐藏   复制代码
  1. $ ng serve

服务器将从http:// localhost:4200运行

结论

在此快速示例中,我们使用Angular Material和Angular 10创建了一个弹出模式对话框。

Angular 10材质的模态弹出示例和教程的更多相关文章

  1. Bootstrap模态弹出框

    前面的话 在 Bootstrap 框架中把模态弹出框统一称为 Modal.这种弹出框效果在大多数 Web 网站的交互中都可见.比如点击一个按钮弹出一个框,弹出的框可能是一段文件描述,也可能带有按钮操作 ...

  2. bootstrap-data-target触发模态弹出窗元素的data使用 data-toggle与data-target的作用 深入ASP.NET MVC之九:Ajax支持 Asp.Net MVC4系列--进阶篇之AJAX

    bootstrap-data-target触发模态弹出窗元素的data使用 时间:2017-05-27 14:22:34      阅读:4479      评论:0      收藏:0      [ ...

  3. iOS模态弹出半透明视图控制器

    项目中需要实现点击按钮出现的视图全屏覆盖,呈半透明状态可以看到下面的视图? 解决方案: 绕了很多弯路原来可以使用模态弹出一个视图控制器 在iOS8之后只需要设置一个最新的属性 SecondViewCo ...

  4. Bootstrap模态弹出窗

    Bootstrap模态弹出窗有三种方式: 1.href触发模态弹出窗元素: <a class="btn btn-primary" data-toggle="moda ...

  5. iOS:模态弹出窗控制器UIPopoverPresentationController

    模态弹出窗控制器:UIPopoverPresentationController 实质:就是将内容控制器包装成PopoverPresentationController的形式,然后再模态出来,必须指定 ...

  6. bootstrap学习--模态弹出框modals轮子

    1.点击按钮型 <link rel="stylesheet" href="lib/bootstrap/css/bootstrap.min.css"> ...

  7. UIPresentationController - iOS自定义模态弹出框

    参考: https://developer.apple.com/library/archive/featuredarticles/ViewControllerPGforiPhoneOS/Definin ...

  8. 玩转Bootstrap(JS插件篇)-第1章 模态弹出框 :1-4 模态弹出框--结构分析

    模态弹出框--结构分析 Bootstrap框架中的模态弹出框,分别运用了“modal”.“modal-dialog”和“modal-content”样式,而弹出窗真正的内容都放置在“modal-con ...

  9. 玩转Bootstrap(JS插件篇)-第1章 模态弹出框 :1-3 模态弹出框

    模态弹出框(Modals) 这一小节我们先来讲解一个“模态弹出框”,插件的源文件:modal.js. 右侧代码编辑器(30行)就是单独引入 bootstrap 中发布出的“modal.js”文件. 样 ...

随机推荐

  1. Django---进阶4

    目录 CBV源码剖析 模版语法传值 过滤器(过滤器只能最多有两个参数) 标签 自定义过滤器.标签.inclusion_tag 模版的继承 模版的导入 作业 CBV源码剖析 # 你自己不要修改源码 除了 ...

  2. day54 作业

    编写代码,将当前日期按"2017-12-27 11:11 星期三"格式输出(提示:switch结构) var date = new Date() ymd = data.toLoca ...

  3. Pandas基础知识图谱

    所有内容整理自<利用Python进行数据分析>,使用MindMaster Pro 7.3制作,emmx格式,源文件已经上传Github,需要的同学转左上角自行下载或者右击保存图片.该图谱只 ...

  4. 最新Spark入门篇

    一.Spark简介 1.什么是Spark Apache Spark是一种快速的集群计算技术,基于Hadoop MapReduce技术,扩展了MapReduce模型,主要特性是在内存中集群计算,速度更快 ...

  5. 使用Python进行XML解析

    XML 指可扩展标记语言(eXtensible Markup Language),常被设计用来传输和存储数据. 在进行医学图像标注时,我们常使用XML格式文件来存储标注,以下展示了使用Python来提 ...

  6. Mysql基础(五):多表查询、pymysql模块

    目录 数据库04 /多表查询.pymysql模块 1. 笛卡尔积 2. 连表查询 3. 子查询 4. pymysql模块 数据库04 /多表查询.pymysql模块 1. 笛卡尔积 将两表所有的数据一 ...

  7. scrapy 源码解析 (五):启动流程源码分析(五) Scraper刮取器

    Scraper刮取器 对ExecutionEngine执行引擎篇出现的Scraper进行展开.Scraper的主要作用是对spider中间件进行管理,通过中间件完成请求.响应.数据分析等工作. Scr ...

  8. Django之自带分页模块Pagination

    Django提供了一些类来帮助您管理分页数据 - 即分布在多个页面上的数据,使用“上一页/下一页”链接.这些课程都在django/core/paginator.py. Example¶ 给Pagina ...

  9. scratch编程体感游戏

    体感游戏有很多种,最常见的就是摄像头和声控了,今天我们要用scratch编写一系列的体感游戏!!!是不是很激动呢? 首先我们来编摄像头类的: No.1拳头打幽灵 挥动头就能打到幽灵了哟! 具体程序如下 ...

  10. CCNA - Part10 数据包的通信过程

    这篇文章主要是对数据包在同网段和不同网段的转发流程梳理,使用 ping 命令进行实际抓包测试. 网关的概念: 对于像 PC 等终端设备来说,通过交换机可以实现同网段的通信.但如果想要给其他网段发生数据 ...