Angular中的结构指令模式及使用详解

 更新时间:2022年08月23日 09:49:17   作者:Jimmy  
这篇文章主要为大家介绍了Angular中的结构指令模式及使用示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

你将学到什么

在 Angular 中,有两种类型的指令。属性指令修改 DOM 元素的外观或者行为。结构指令添加或者移除 DOM 元素。

结构指令是 Angular 中最强大的特性之一,然而它们却频繁被误解。

如果你对学习 结构指令 感兴趣,那么现在我们就来接着阅读,并了解它们是什么,它们有什么用以及如何在项目中使用它们。

在本文中,你将学到关于 Angular 结构指令模式的知识点。你会知道它们是什么并且怎么去使用它们。

学完本文,你将更好理解这些指令并在实际项目中使用它们。

Angular 结构指令是什么?

Angular 结构指令是能够更改 DOM 结构的指令。这些指令可以添加、移除或者替换元素。结构指令在其名字之前都有 * 符号。

在 Angular 中,有三种标准的结构化指令。

  • *ngIf - 根据表达式返回的布尔值,有条件地包含一个模版(即条件渲染模版)
  • *ngFor - 遍历数组
  • *ngSwitch - 渲染每个匹配的是图

下面👇是一个结构化指令的例子。语法长这样:

 <element ng-if="Condition"></element>

条件语句必须是 true 或者 false。

<div *ngIf="worker" class="name">{{worker.name}}</div>

Angular 生成一个 <ng-template> 的元素,然后应用 *ngIf 指令。这会将其转换为方括号 [] 中的属性绑定,比如 [ngIf]。<div> 的其余部分,包含类名,插入到 <ng-template> 里。

比如:

<ng-template [ngIf]="worker">
  <div class="name">{{worker.name}}</div>
</ng-template>

Angular 结构指令是怎么工作的?

要使用结构指令,我们需要在 HTML 模版中添加一个带有指令的元素。然后根据我们在指令中设置的条件或者表达式添加、删除或者替换元素。

结构指令的例子

我们添加些简单的 HTML 代码。

app.component.html 文件内容如下:

<div style="text-align:center">
  <h1>
    Welcome 
  </h1>
</div>
<h2> <app-illustrations></app-illustrations></h2>

怎么使用 *ngIf 指令

我们根据条件来使用 *ngIf 来确定展示或者移除一个元素。ngIf 跟 if-else 很类似。

当表达式是 false 的时候,*ngIf 指令移除 HTML 元素。当为 true 时候,元素的副本会添加到 DOM 中。

完整的*ngIf 代码如下:

<h1>
	<button (click)="toggleOn =!toggleOn">ng-if illustration</button>
  </h1>
  <div *ngIf="!toggleOn">
  <h2>Hello </h2>
  <p>Good morning to you,click the button to view</p>
  </div>
  <hr>
  <p>Today is Monday and this is a dummy text element to make you feel better</p>
  <p>Understanding the ngIf directive with the else clause</p>

怎么使用 *ngFor 指令

我们使用 *ngFor 指令来遍历数组。比如:

<ul>
    <li *ngFor="let wok of workers">{{ wok }}</li>
</ul>

我们的组件 TypeScript 文件:

import { Component, OnInit } from '@angular/core';
@Component({
  selector: 'app-illustrations',
  templateUrl: './illustrations.component.html',
  styleUrls: ['./illustrations.component.css']
})
export class IllustrationsComponent implements OnInit {
  workers: any = [
    'worker 1',
    'worker 2',
    'worker 3',
    'worker 4',
    'worker 5',
  ]
  constructor() { }
  ngOnInit(): void {
  }
}

怎么使用 *ngSwitch 指令

译者加:这个指令实际开发很有用

我们使用 ngSwitch 来根据不同条件声明来决定渲染哪个元素。*ngSwitch 指令很像我们使用的 switch 语句。比如:

<div [ngSwitch]="Myshopping">
  <p *ngSwitchCase="'cups'">cups</p>
  <p *ngSwitchCase="'veg'">Vegetables</p>
  <p *ngSwitchCase="'clothes'">Trousers</p>
  <p *ngSwitchDefault>My Shopping</p>
</div>

在 typescript 中:

Myshopping: string = '';

我们有一个 MyShopping 变量,它有一个默认值,用于在模块中渲染满足条件的特定元素。

当条件值是 true 的时候,相关的元素就会被渲染到 DOM 中,其余的元素将被忽略。如果没有元素匹配,则渲染 *ngSwitchDefault 的元素到 DOM 中。

Angular 中我们什么时候需要用结构指令呢?

如果你想在 DOM 中添加或者移除一个元素的时候,你就应该使用结构指令。 当然,我们还可以使用它们来更改元素 CSS 样式,或者添加事件监听器。甚至可以使用它们来创建一个之前不存在的新的元素。

最好的规则是:当我们正在考虑操作 DOM 的时候,那么是时候使用结构指令了。

总结

结构指令是 Angular 中很重要的一部分,我们可以通过多种方式使用它们。

希望通过本文,读者能更好理解怎么去使用这些指令和什么时候去使用这些模式。

本文为译文,采用意译的形式。原文地址:Angular Structural Directive Patterns – What They Are and How to Use Them

以上就是Angular中的结构指令模式及使用详解的详细内容,更多关于Angular结构指令模式的资料请关注脚本之家其它相关文章!

相关文章

  • Angular2+如何去除url中的#号详解

    Angular2+如何去除url中的#号详解

    这篇文章主要给大家介绍了关于Angular 2+时如何去除url中#号的相关资料,文中先对#号去除的原因及方法进行详细的介绍和分析,然后通过示例代码给大家演示去除的方法,需要的朋友可以参考借鉴,下面随着小编来一起看看吧。
    2017-12-12
  • AngularJS ng-repeat数组有重复值的解决方法

    AngularJS ng-repeat数组有重复值的解决方法

    不知道大家是否遇到过这个问题,在当Angular.JS ng-repeat数组中有重复项时,系统就会抛出异常,这是该怎么做?本文通过示例代码介绍了详细的解决方法,有需要的朋友们可以参考借鉴,下面来一起看看吧。
    2016-10-10
  • 详解如何构建Angular项目目录结构

    详解如何构建Angular项目目录结构

    本篇文章主要介绍了详解如何构建Angular项目目录结构,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-07-07
  • AngularJS入门(用ng-repeat指令实现循环输出

    AngularJS入门(用ng-repeat指令实现循环输出

    这篇文章主要介绍了AngularJS入门(用ng-repeat指令实现循环输出,需要的朋友可以参考下
    2016-05-05
  • AngularJS轻松实现双击排序的功能

    AngularJS轻松实现双击排序的功能

    网上已经有AngularJS比较多的相关教程了,那么这篇文章我们一起来看一个AngularJS双击排序的例子,对大家日常开发很有帮助的,有需要的可以参考借鉴。
    2016-08-08
  • 详解ng-alain动态表单SF表单项设置必填和正则校验

    详解ng-alain动态表单SF表单项设置必填和正则校验

    这篇文章主要介绍了详解ng-alain动态表单SF表单项设置必填和正则校验,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-06-06
  • Angular2使用jQuery的方法教程

    Angular2使用jQuery的方法教程

    这篇文章主要给大家介绍了关于Angular2使用jQuery的方法教程,文中介绍的非常详细,对大家具有一定的参考学习价值,需要的朋友们下面来跟着小编一起学习学习吧。
    2017-05-05
  • AngularJS路由删除#符号解决的办法

    AngularJS路由删除#符号解决的办法

    这篇文章主要介绍了AngularJS路由删除#符号解决的办法的相关资料,希望通过本文能帮助到大家,需要的朋友可以参考下
    2017-09-09
  • AngularJS Bootstrap详细介绍及实例代码

    AngularJS Bootstrap详细介绍及实例代码

    本文主要介绍AngularJS Bootstrap,这两对AngularJS Bootstrap的基础知识做了详细讲解,并提供简单示例,有需要的小伙伴可以参考下
    2016-07-07
  • Angular2 Service实现简单音乐播放器服务

    Angular2 Service实现简单音乐播放器服务

    本篇文章主要介绍了Angular2 Service实现简单音乐播放器服务 ,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-02-02

最新评论