当前位置: 首页 > news >正文

Angular-04:指令

  • ① 内置指令
    • 1.1 *ngIf 结构指令
    • 1.2 [hidden] 属性指令
    • 1.3. *ngFor 结构指令
    • 1.4 *ngSwitch 结构指令
  • ② 自定义指令用法

  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,或不符合以上条件则显示:“加班”)

在这里插入图片描述


② 自定义指令用法

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

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

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

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>

效果图:
在这里插入图片描述

相关文章:

  • Java使用OkHttp库采集电商视频简单代码示例
  • 深入理解强化学习——强化学习的历史:时序差分学习
  • FFmpeg 从视频流中抽取图片
  • H5 Vue跳转小程序
  • Nginx 的配置文件(负载均衡,反向代理)
  • linux中断下文工作队列之工作队列传参(中断七)
  • css文字竖向排列
  • 部署K8S
  • Vue 3.0 学习 新特性
  • Python-platform模块
  • 1-1 暴力破解-枚举
  • 代码之困:那些让你苦笑不得的bug
  • html和css中图片加载与渲染的规则是什么?
  • 系列四十五、Spring的事务传播行为案例演示(五)#MANDATORY
  • 驱动第十天
  • 30天自制操作系统-2
  • leetcode讲解--894. All Possible Full Binary Trees
  • MySQL QA
  • nginx(二):进阶配置介绍--rewrite用法,压缩,https虚拟主机等
  • PHP的Ev教程三(Periodic watcher)
  • SpriteKit 技巧之添加背景图片
  • 大快搜索数据爬虫技术实例安装教学篇
  • 计算机常识 - 收藏集 - 掘金
  • 简单基于spring的redis配置(单机和集群模式)
  • 开源地图数据可视化库——mapnik
  • 利用阿里云 OSS 搭建私有 Docker 仓库
  • 排序(1):冒泡排序
  • 配置 PM2 实现代码自动发布
  • 嵌入式文件系统
  • 设计模式 开闭原则
  • 使用 @font-face
  • 《码出高效》学习笔记与书中错误记录
  • MPAndroidChart 教程:Y轴 YAxis
  • #pragam once 和 #ifndef 预编译头
  • #调用传感器数据_Flink使用函数之监控传感器温度上升提醒
  • $ git push -u origin master 推送到远程库出错
  • $(document).ready(function(){}), $().ready(function(){})和$(function(){})三者区别
  • (Matlab)遗传算法优化的BP神经网络实现回归预测
  • (安卓)跳转应用市场APP详情页的方式
  • (附源码)计算机毕业设计SSM教师教学质量评价系统
  • (译)计算距离、方位和更多经纬度之间的点
  • (原)记一次CentOS7 磁盘空间大小异常的解决过程
  • .NET / MSBuild 扩展编译时什么时候用 BeforeTargets / AfterTargets 什么时候用 DependsOnTargets?
  • .NetCore Flurl.Http 升级到4.0后 https 无法建立SSL连接
  • .NET单元测试
  • @Autowired @Resource @Qualifier的区别
  • @ModelAttribute使用详解
  • [ 云计算 | Azure 实践 ] 在 Azure 门户中创建 VM 虚拟机并进行验证
  • [Flutter]WindowsPlatform上运行遇到的问题总结
  • [GDOUCTF 2023]<ez_ze> SSTI 过滤数字 大括号{等
  • [iOS开发]事件处理与响应者链
  • [JavaEE]线程的状态与安全
  • [Linux] MySQL数据库之索引
  • [Linux] 一文理解HTTPS协议:什么是HTTPS协议、HTTPS协议如何加密数据、什么是CA证书(数字证书)...
  • [Luogu P3527BZOJ 2527][Poi2011]Meteors(整体二分+BIT)