Angular-04:指令

这篇具有很好参考价值的文章主要介绍了Angular-04:指令。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

  1. 指令是angular操作dom的途径,分为属性指令和结构指令。
  2. 属性指令:修改元素的外观或行为。使用 [ ] 包裹。
  3. 结构指令:增加、删除dom节点以修改布局,使用*作为指令前缀。
  4. 指令与模板关系密切,可以与DOM进行灵活交互,改变布局或者样式。
  5. 组件也是指令的一种,区别在于:组件带有单独的模板,一般指令作用于已有DOM元素上。
  • 此处列举的不完全,只是几个常用的

① 内置指令

1.1 *ngIf 结构指令

根据条件渲染DOM节点或者移出dom节点

<!--满足条件才渲染该节点-->

 <div *ngIf="data.length===0">暂无数据</div>

1.2 [hidden] 属性指令

根据条件显示Dom节点或隐藏dom节点(display)根据样式来控制元素显示

1.3. *ngFor 结构指令

遍历数据生成html结构。

范例:ngFor所有属性

   <p *ngFor="
			  let item of items;   // 数据遍历
		      let i = index;   // 当前索引值
		      let isEven = even;  // 当前是否是奇数行
			  let isOdd = odd;   // 当前是否是偶数行
	 	      let isFirst = first;  // 当前是否是第一行
		      let isLast = last;  // 当前是否是最后一行
		      trackBy:trackBy;  //优化数据渲染,提高性能。接收一个函数
	        ">
  </p>
 let i = index;  // index为ngFor内部提供的一个变量,这里声明一个变量i并赋值过来,就可以在页面上使用了。

1.4 *ngSwitch 结构指令

  1. 控制显示那个模板,类似js中的switch
  2. 语法:[ngSwitch]=“表达式” *ngSwitchCase=“条件值” *ngSwitchDefault----(在不满足任何条件时选择)

例:

<ul [ngSwitch]="status">
       <li *ngSwitchCase="1">周一</li>
       <li *ngSwitchCase="2">周二</li>
       <li *ngSwitchCase="3">周三</li>
       <li *ngSwitchCase="4">周四</li>
       <li *ngSwitchCase="5">周五</li>
       <li *ngSwitchDefault>加班</li>
</ul>
status: number = 1;

结果: status值为1,显示“周一”;(如果status为0,或不符合以上条件则显示:“加班”)

Angular-04:指令,angular,angular


② 自定义指令用法

场景:为元素设置默认的背景颜色,鼠标移入时的背景颜色以及移出时的背景颜色。

举例:元素默认为深蓝色,鼠标移入时变成粉色,移出变成黄色

  • 用户可以设置自定义颜色,未设置颜色使用默认色深蓝色,自定义颜色使用了浅蓝色。

appBgColor指令

import { AfterViewInit, Directive, ElementRef, HostListener, Input } from '@angular/core';

// 接收参数的类型
interface Options {
  bgColor?: string;
}


@Directive({
  selector: '[appBgColor]'
})
export class BgColorDirective implements AfterViewInit {

  // 接收参数,没有传入值,默认为:#00aaff
  @Input("appBgColor") appBgColor: Options = {};

  //要操作的Dom节点
  element: HTMLElement;

  constructor(
    private el: ElementRef //获取要操作的Dom节点
  ) {
    this.element = this.el.nativeElement;
  }

  // 组件模板初始化完成后设置元素的背景颜色
  ngAfterViewInit(): void {
    this.element.style.backgroundColor = this.appBgColor.bgColor || "#00aaff";
  }

  // 为元素添加鼠标移入监听
  @HostListener('mouseenter') enter() {
    this.element.style.backgroundColor = 'pink';
  }

  // 为元素添加鼠标移出监听
  @HostListener('mouseleave') leave() {
    this.element.style.backgroundColor = 'yellow';
  }
}

1.使用指令默认颜色
未设置颜色,使用默认颜色

<div class="test" appBgColor>第一块</div>

2.使用自定义颜色

<div class="test" [appBgColor]="{bgColor:'skyblue'}">第二块</div>

效果图:
Angular-04:指令,angular,angular文章来源地址https://www.toymoban.com/news/detail-719221.html

到了这里,关于Angular-04:指令的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Angular 17+ 高级教程 – Component 组件 の Structural Directive (结构型指令) & Syntax Reference (微语法)

    在 Attribute Directives 属性型指令 文章中,我们学习过了指令。指令是没有 HTML 和 CSS 的组件,它单纯用于封装 JS 的部分。 这一篇我们将继续学习另一种指令 -- Structural Directive 结构型指令。 就代码而言,Structural Directive 和 Attribute Directives 是完全一样的,只是用途不同,因此

    2024年03月10日
    浏览(49)
  • angular前端环境搭建、安装angular

    1.下载node.js安装包(要求node版本大于12.20) Node.js官方网站 : https://nodejs.org/en/ 进入官网后,当前页面下载的是最新版本,如需要下载历史版本,点击红框标注的其他下载,在进入的新的页面底部,选择红框标准的先前版本,然后下载相应的版本,在跳转的页面下载win64的版

    2024年02月03日
    浏览(58)
  • 【Angular开发】Angular中的高级组件

    在这个博客中,我将解释Angular中的几个高级组件和机制,它们增强了灵活性、可重用性和性能。 通过熟悉这些高级组件和机制,您可以提高您的Angular开发技能,并在应用程序中利用灵活性、可重用性和性能优化的能力。让我们开始吧! NgContent NgContent,或Angular中的内容投影

    2024年02月04日
    浏览(55)
  • Angular 11到升级到 Angular 16

    日新月异,与时俱进… 随着Angular版本不断更新,再看所开发的项目版本仍然是Angular 11,于是准备升级 截止发博日最版本是 v17.1.0,考虑到稳定性因素决定升级到v16版本 执行命令行 但是发现直接报错了… 红色字体大概意思就是: 迁移失败:发现不兼容的对等依赖项 安装依

    2024年02月04日
    浏览(36)
  • 探索Angular测试艺术:Angular Testing Recipes

    项目地址:https://gitcode.com/juristr/angular-testing-recipes Angular Testing Recipes是一个开源项目,由开发者Juri Strumpfloeger精心打造,旨在为Angular开发者提供一系列实用的测试策略和示例代码。该项目以GitCode为平台,以Markdown格式分享了关于单元测试、组件测试、服务测试等方面的实战技

    2024年04月22日
    浏览(37)
  • [Angular] Import TranslateModule in Angular 16

    Angular 更新至V16版后,支援 standalone,故移除了 NgModule,而TranslateModule 又要在AppModule中 import,那该如何做呢?

    2024年02月16日
    浏览(48)
  • Angular(二) Understanding Dependency Injection for angular

    Angular https://angular.io/guide/dependency-injection Denpendency Injection,  or DI, is one of fundamental concepts for angular, DI is writed by angular framework and allows classes with  Angular decorators,  such as Components, directives, Piples and Injectables , to configure dependencies that they need.  Two main roles exists in DI system: dependency

    2024年02月09日
    浏览(39)
  • 【angular教程240112】09(完) Angular中的数据请求 与 路由

    【angular教程240112】09(完) Angular中的数据请求 与 路由 Angular中的数据请求 内置模块HttpClient实现(get post jsonp 以及第三方模板axios请求数据 一、 Angular get 请求数据 二、 Angular post提交数据 三、 Angular Jsonp请求数据 四、 Angular中使用第三方模块axios请求数据 五、Angular内置模块H

    2024年01月21日
    浏览(47)
  • Angular 17+ 高级教程 – Angular 的局限 の Query Elements

    熟悉 Angular 的朋友都知道,Angular 有非常多的局限,许多事情它都做不好,打开 Github 一堆 2016 - 2017 的 Issues,时至今日都没有解决。 原因也很简单 -- Angular 团队的不作为😔。 通常我会把常见的 Angular 的局限记入在这篇 Angular 的局限和 Github Issues,但由于本篇要讲的问题篇幅

    2024年04月24日
    浏览(45)
  • 【Angular架构】成为一名Angular架构师需要掌握的6个概念

    每个Angular开发人员都应该深入探索六个概念,以便掌握Angular并设计出架构良好的应用程序。 Angular是最大的框架之一:它提供了很多开箱即用的功能,这意味着从上到下有很多概念可以掌握。 我认为每个Angular开发人员都应该深入探索六个特定的概念,以便掌握Angular并能够熟

    2024年02月03日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包