热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

【Angular学习】(二)指令

在Angular中有三种类型的指令:组件—拥有模板的指令。结构型指令—通过添加和移除DOM元素改变DOM布局的指令。属性型指令—改变元素、组件或其它指令的外观和行为

在 Angular 中有三种类型的指令:

组件 — 拥有模板的指令。
结构型指令 — 通过添加和移除 DOM 元素改变 DOM 布局的指令。
属性型指令 — 改变元素、组件或其它指令的外观和行为的指令。


组件


创建组件

在控制台输入ng generate component 组件名

新生成的组件,在src的app里面
在这里插入图片描述
创建完成后的文件有scss(我预设的样式文件为scss),html,ts,spec.ts四个文件,scss写样式,html写静态页面,ts写js代码,spec.ts测试使用
app.module.ts文件的装饰器下,自动声明了刚才新添加的组件


应用组件

在这里插入图片描述
component.ts文件中,@Component就是一个装饰器,把product装饰成一个组件,selector决定改组件以什么标签被使用。

然后就可以在app.component.html使用标签来应用product组件了
在这里插入图片描述
这时候打开localhost:4200可以看到组件效果
在这里插入图片描述


属性型指令

属性型指令至少需要一个带有 @Directive 装饰器的控制器类。该装饰器指定了一个用于标识属性的选择器。 控制器类实现了指令需要的指令行为。


创建方式

例如创建一个highlight的属性型指令。这个指令在鼠标悬浮时给文字设置背景颜色。

先控制台新建指令

ng generate directive highlight

会生成TS文件src/app/highlight.directive.ts
在这里插入图片描述
现在编辑这个TS文件
在这里插入图片描述
使用import 语句从 Angular 的 core 库中导入一个 ElementRef 符号。

可以在指令的构造函数中注入 ElementRef,来引用宿主 DOM 元素,

ElementRef 通过其 nativeElement 属性,让我们可以直接访问宿主 DOM 元素。

这里的第一个实现把宿主元素的背景色设置为了黄色。


使用方法

Highlight me!


Angular 在宿主元素

上发现了一个 appHighlight 属性。 然后它创建了一个 HighlightDirective 类的实例,并把所在元素的引用注入到了指令的构造函数中。 在构造函数中,该指令把

元素的背景设置为了黄色。


结构型指令


NgIf

该指令用于根据表达式的值,动态控制模板内容的显示与隐藏。
它与 AngularJS 1.x 中的 ng-if 指令的功能是等价的。

语法

...


NgFor

该指令用于基于可迭代对象中的每一项创建相应的模板。
它与 AngularJS 1.x 中的 ng-repeat 指令的功能是等价的。

语法

  • ...


  • NgSwitch

    Angular 的 NgSwitch 实际上是一组相互合作的指令:NgSwitch、NgSwitchCase 和 NgSwitchDefault。
    一个值(hero.emotion)被被赋值给了 NgSwitch,以决定要显示哪一个分支。

    NgSwitch 本身不是结构型指令,而是一个属性型指令,它控制其它两个 switch 指令的行为。 这也就是要写成 [ngSwitch] 而不是 *ngSwitch 的原因。

    NgSwitchCase 和 NgSwitchDefault 都是结构型指令,因此要使用星号(*)前缀来把它们附着到元素上。
    NgSwitchCase 会在它的值匹配上选项值的时候显示它的宿主元素。
    NgSwitchDefault 则会当没有兄弟。
    NgSwitchCase 匹配上时显示它的宿主元素。




    写法

    指令同时具有两种拼写形式大驼峰和小驼峰,比如NgIf 和 ngIf。 这里的原因在于,NgIf 引用的是指令的类名,而 ngIf 引用的是指令的属性名。
    指令的类名拼写成大驼峰形式(NgIf),而它的属性名则拼写成小驼峰形式(ngIf)。


    星号(*)

    指令前加星号,是一个语法糖。
    从内部实现来说,Angular 把 *ngIf 属性 翻译成一个 元素 并用它来包裹宿主元素。
    比如下面的例子

    {{hero.name}}

    angular会将它翻译成

    {{hero.name}}



    推荐阅读
    • 本文介绍了在SpringBoot中集成thymeleaf前端模版的配置步骤,包括在application.properties配置文件中添加thymeleaf的配置信息,引入thymeleaf的jar包,以及创建PageController并添加index方法。 ... [详细]
    • VScode格式化文档换行或不换行的设置方法
      本文介绍了在VScode中设置格式化文档换行或不换行的方法,包括使用插件和修改settings.json文件的内容。详细步骤为:找到settings.json文件,将其中的代码替换为指定的代码。 ... [详细]
    • Nginx使用(server参数配置)
      本文介绍了Nginx的使用,重点讲解了server参数配置,包括端口号、主机名、根目录等内容。同时,还介绍了Nginx的反向代理功能。 ... [详细]
    • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
    • Webpack5内置处理图片资源的配置方法
      本文介绍了在Webpack5中处理图片资源的配置方法。在Webpack4中,我们需要使用file-loader和url-loader来处理图片资源,但是在Webpack5中,这两个Loader的功能已经被内置到Webpack中,我们只需要简单配置即可实现图片资源的处理。本文还介绍了一些常用的配置方法,如匹配不同类型的图片文件、设置输出路径等。通过本文的学习,读者可以快速掌握Webpack5处理图片资源的方法。 ... [详细]
    • CSS3选择器的使用方法详解,提高Web开发效率和精准度
      本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
    • baresip android编译、运行教程1语音通话
      本文介绍了如何在安卓平台上编译和运行baresip android,包括下载相关的sdk和ndk,修改ndk路径和输出目录,以及创建一个c++的安卓工程并将目录考到cpp下。详细步骤可参考给出的链接和文档。 ... [详细]
    • 本文详细介绍了Linux中进程控制块PCBtask_struct结构体的结构和作用,包括进程状态、进程号、待处理信号、进程地址空间、调度标志、锁深度、基本时间片、调度策略以及内存管理信息等方面的内容。阅读本文可以更加深入地了解Linux进程管理的原理和机制。 ... [详细]
    • 后台获取视图对应的字符串
      1.帮助类后台获取视图对应的字符串publicclassViewHelper{将View输出为字符串(注:不会执行对应的ac ... [详细]
    • 本文介绍了在Mac上搭建php环境后无法使用localhost连接mysql的问题,并通过将localhost替换为127.0.0.1或本机IP解决了该问题。文章解释了localhost和127.0.0.1的区别,指出了使用socket方式连接导致连接失败的原因。此外,还提供了相关链接供读者深入了解。 ... [详细]
    • 《数据结构》学习笔记3——串匹配算法性能评估
      本文主要讨论串匹配算法的性能评估,包括模式匹配、字符种类数量、算法复杂度等内容。通过借助C++中的头文件和库,可以实现对串的匹配操作。其中蛮力算法的复杂度为O(m*n),通过随机取出长度为m的子串作为模式P,在文本T中进行匹配,统计平均复杂度。对于成功和失败的匹配分别进行测试,分析其平均复杂度。详情请参考相关学习资源。 ... [详细]
    • 高质量SQL书写的30条建议
      本文提供了30条关于优化SQL的建议,包括避免使用select *,使用具体字段,以及使用limit 1等。这些建议是基于实际开发经验总结出来的,旨在帮助读者优化SQL查询。 ... [详细]
    • Html5-Canvas实现简易的抽奖转盘效果
      本文介绍了如何使用Html5和Canvas标签来实现简易的抽奖转盘效果,同时使用了jQueryRotate.js旋转插件。文章中给出了主要的html和css代码,并展示了实现的基本效果。 ... [详细]
    • CentOS 7部署KVM虚拟化环境之一架构介绍
      本文介绍了CentOS 7部署KVM虚拟化环境的架构,详细解释了虚拟化技术的概念和原理,包括全虚拟化和半虚拟化。同时介绍了虚拟机的概念和虚拟化软件的作用。 ... [详细]
    • 本文介绍了前端人员必须知道的三个问题,即前端都做哪些事、前端都需要哪些技术,以及前端的发展阶段。初级阶段包括HTML、CSS、JavaScript和jQuery的基础知识。进阶阶段涵盖了面向对象编程、响应式设计、Ajax、HTML5等新兴技术。高级阶段包括架构基础、模块化开发、预编译和前沿规范等内容。此外,还介绍了一些后端服务,如Node.js。 ... [详细]
    author-avatar
    手机用户2602918063
    这个家伙很懒,什么也没留下!
    PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
    Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有