首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Angular 9-指令,如何从组件读取属性

在 Angular 9 中,要从组件读取属性,您可以使用@Input()装饰器将属性注入到指令中

  1. 创建一个指令文件。例如,我们创建一个名为example.directive.ts的文件。在这个文件中,我们将定义一个名为ExampleDirective的指令。
代码语言:javascript
复制
import { Directive, ElementRef, Input } from '@angular/core';

@Directive({
  selector: '[appExample]'
})
export class ExampleDirective {
  @Input('appExample') customProperty: any;

  constructor(private el: ElementRef) { }

  ngOnChanges() {
    // 在这里,您可以根据 customProperty 的值改变 DOM ,或者执行其他操作
    this.el.nativeElement.style.backgroundColor = this.customProperty;
  }
}

在这个例子中,我们使用@Input()装饰器定义了一个名为customProperty的输入属性。我们把改变元素背景颜色的操作放在ngOnChanges()生命周期钩子中,这样我们可以读取属性值的变化。

  1. 在组件的 HTML 模板中使用这个指令,并传递属性值。
代码语言:javascript
复制
<!-- app.component.html -->
<div [appExample]="propertyValue">Custom property value is: {{ propertyValue }}</div>
  1. 在组件类中定义属性值。
代码语言:javascript
复制
// app.component.ts
import { Component } from '@angular/core';

@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.scss']
})
export class AppComponent {
  propertyValue = 'red';
}

现在,ExampleDirective将从AppComponent读取propertyValue属性,并根据其值改变元素的背景颜色。当propertyValue属性值发生改变时,ngOnChanges() 生命周期钩子将会触发,指令的逻辑会相应地更新 DOM。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

AngularDart4.0 指南- 模板语法一 顶

学习如何编写显示数据并在数据绑定的帮助下使用用户事件的模板。 Angular应用程序管理用户看到和可以做的事情,通过组件类实例(组件)和面向用户的模板的交互来实现这一点。...您可以使用组件指令出现的新元素和属性来扩展模板的HTML词汇表。 在下面的章节中,您将学习如何通过数据绑定来动态获取和设置DOM(文档对象模型)值。...Angular执行表达式并将其分配给绑定目标的属性; 目标可能是HTML元素,组件指令。...就是如何用户操作更新应用程序状态。 响应事件是Angular的“单向数据流”的另一面。在事件循环的这个周期中,您可以自由地在任何地方进行所有更改。...您不能使用属性绑定将值目标元素中拉出。 您不能绑定到目标元素的属性读取它。 你只能设置它。 同样,您不能在目标元素上使用属性绑定来调用方法。

5.2K10

Angular实战之使用NG-ZORRO创建一个企业级中后台框架(进阶篇)

前言:   上一篇文章我们讲了如何在创建的Angular项目中快速引入ng-zorro-antd企业中台组件库,并且快速构建后台管理页面框架模板。...这一章主要介绍的是如何在创建好的后台管理页面框架的快速生成NG-ZORRO相关的组件,并且介绍Angular相关目录结构、生命周期函数,路由配置和使用相关知识点,以及如何使用Angular CLI使用一行代码快速添加...ngOnInit() 在 Angular 第一次显示数据绑定和设置指令/组件的输入属性之后,初始化指令/组件。 在第一轮 ngOnChanges() 完成之后调用,只调用一次。...ngOnDestroy() 每当 Angular 每次销毁指令/组件之前调用并清扫。 在这儿反订阅可观察对象和分离事件处理器,以防内存泄漏。 在 Angular 销毁指令/组件之前调用。...自定义页面Layout布局(动态菜单栏配置): 一般情况下我们的页面动态菜单都是后台读取,然后遍历绑定在【app.component.html】页面中的,我们这里没有展示没有涉及到后台就是用固定式的路由

4K20
  • Angular学习笔记(一)

    其中最重要的属性是: declarations - 声明本模块中拥有的视图类。Angular 有三种视图类:组件指令和管道。...组件 组件负责控制视图,通过一些由属性和方法组成的 API 与视图交互。 模板 模板以 HTML 形式存在,告诉 Angular 如何渲染组件。 元数据 元数据告诉 Angular 如何处理一个类。...数据绑定 Angular 支持数据绑定,一种让模板的各部分与组件的各部分相互合作的机制。 往模板 HTML 中添加绑定标记,来告诉 Angular 如何把二者联系起来。...Angular 使用依赖注入来提供新组件以及组件所需的服务。 2. 模板与数据绑定 绑定的类型可以根据数据流的方向分成三类: 数据源到视图、视图到数据源以及双向的视图到数据源再到视图。...ngOnInit() 在 Angular 第一次显示数据绑定和设置指令/组件的输入属性之后,初始化指令/组件。 在第一轮 ngOnChanges() 完成之后调用,只调用一次。

    3.3K20

    AngularDart 4.0 高级-结构指令

    Angular拥有强大的模板引擎,可以让我们轻松操纵元素的DOM结构。 本指南介绍Angular如何用结构指令操纵DOM,以及如何编写自己的结构指令来完成相同的操作。 尝试一下实例(查看源代码)。...还有其他两种Angular指令,在其他地方被广泛描述:(1)组件和(2)属性指令组件以本地HTML元素的方式管理HTML区域。 从技术上讲,这是一个模板指令。...当条件为false时,NgIfDOM中删除它的宿主元素,将它从DOM事件(它所依附的)中分离出来,将组件Angular变化检测中分离出来并销毁它。 组件和DOM节点可以被垃圾收集并释放内存。...*ngFor内部详解 Angular以类似的方式将*ngFor转换为星号(*)语法通过模板属性到模板元素。...没有人读取myUnless属性,因此它不需要getter。

    16.1K20

    AngularDart4.0 指南-体系结构概述 顶

    该类通过属性和方法的API与视图交互。  例如,这个HeroListComponent有一个heroes属性,返回服务中获取的英雄列表。...注意是如何在原生HTML元素中合适的存放。 自定义组件与原生HTML在相同的布局中无缝混合。 元数据 ? 元数据告诉Angular如何处理一个类。...用户的更改也会返回到组件,将属性重置为最新值,就像事件绑定一样。 Angular在每个JavaScript事件循环中处理所有数据绑定,应用程序组件树的根到所有子组件。 ?...虽然组件在技术上是指令,但组件对于Angular应用程序来说是非常独特和重要的,所以这种架构概述将组件指令分开。 还有其他两种指令:结构和属性指令。...属性指令会改变现有元素的外观或行为。 在模板中,它们看起来像常规的HTML属性,因此也就是名称。 实现双向数据绑定的ngModel指令是一个属性指令的例子。

    7.9K30

    AngularDart 4.0 高级-生命周期钩子 顶

    ngOnInit 在Angular首次显示数据绑定属性并设置指令/组件的输入属性后,初始化指令/组件。 在第一次ngOnChanges之后调用一次。...OnChanges 看看每次组件输入属性发生变化时,Angular如何用变更对象调用ngOnChanges钩子。 显示如何解释更改对象。...AngularDOM中移除所有英雄元素并同时销毁他们的间谍指令。 间谍的ngOnDestroy方法报告其最后时刻。...ngOnInit是组件获取其初始数据的好地方。 教程和HTTP章节显示了如何。 还要记住,指令的数据绑定输入属性在构建之后才会设置。 如果您需要根据这些属性初始化指令,那么这是一个问题。...hero属性的值是对hero对象的引用。 Angular并不在意英雄自己的name属性发生了变化。 英雄对象引用没有改变,所以Angular的角度来看,没有改变的反馈!

    6.2K10

    AngularDart4.0 高级-属性(Attribute)指令

    属性指令改变DOM元素的外观或行为。 尝试一下实例(查看源代码)。 指令概述 Angular有三种指令组件 - 指令与模板。 结构指令 - 通过添加和删除DOM元素来更改DOM布局。...它将元数据添加到使指令的highlightColor属性可用于绑定的类。 它被称为输入属性,因为数据绑定表达式流入指令。 没有这个输入元数据,Angular拒绝绑定; 请参阅下面的更多关于这一点。...'red'); 当您已经绑定到myHighlight属性名称时,如何绑定到第二个属性? 与组件一样,您可以根据需要添加尽可能多的指令属性绑定,方法是在模板中将它们串起来。 ...没有@Input,Angular拒绝绑定到属性。 您之前已将模板HTML绑定到组件属性,并且从未使用@Input。 有什么不同? 差别是一个信任的问题。 Angular组件的模板视为属于组件。...Angular绑定角度来看,它们是私密的。当用@Input注解装饰时,该属性Angular绑定的角度变成公共的。只有这样它才能受到其他组件指令的绑定。

    3.2K10

    AngularDart4.0 指南- 表单 顶

    本页面向您展示了如何从头构建一个简单的表单。一路上你将学习如何: 用组件和模板构建一个Angular表单。 使用ngModel创建读取和写入输入控制值的双向数据绑定。...创建一个基本的表单 一个Angular表单有两个部分:一个基于HTML的模板和一个组件类,以编程方式处理数据和用户交互。 课程开始,因为它简要地说明了英雄编辑可以做什么。...你知道如何从早期的页面做到这一点。 显示数据教导属性绑定。 用户输入显示如何使用事件绑定监听DOM事件以及如何使用显示的值更新组件属性。 现在您需要同时显示,聆听和提取。...指令的exportAs属性告诉Angular如何将引用变量链接到指令。 您将name设置为“ngForm”,因为ngModel指令的exportAs属性是“ngForm”。...概要 Angular表单为数据修改,验证等提供支持。 在此页面中,您学习了如何使用以下功能: 一个HTML表单模板和一个带有@Component注解的表单组件类。

    17.5K30

    Angular 入坑到挖坑 - 组件食用指南

    一、Overview angular 入坑记录的笔记第二篇,介绍组件中的相关概念,以及如何angular 中通过使用组件来完成系统功能的实现 对应官方文档地址: 显示数据 模板语法 用户输入 组件之间的交互...,可以通过 angular 内置的模板语法与 html 元素进行结合,从而告诉 angular 如何根据我们的应用逻辑和数据来渲染页面 4.1.2.1、插值表达式 插值表达式可以将组件中的属性值或者是模板上的数据通过模板表达式运算符进行计算...模板表达式的变量来源 模板本身的变量 指令的上下文变量 组件的成员信息(属性 or 方法) 在使用模板表达式时,如果变量名在多个来源中都存在的话,则模板变量是最优先的,其次是指令的上下文变量,最后是组件的成员...:插值、组件中的属性、dom 元素的 property 3、css 样式、css 类 视图到数据源:事件 视图与数据源之间的双向绑定:数据对象 分类 语法 单向数据源到视图 1、插值表达式:{{expression...4.4、组件之间的通信 4.4.1、输入属性与输出属性 输入属性(@Input)和输出属性(@Output)用来在父子组件指令中进行共享数据。

    15.8K30

    【17】进大厂必须掌握的面试题-50个Angular面试

    特征 AngularJS Angular 建筑 支持MVC设计模型 使用组件指令 语言 推荐语言:JavaScript 推荐语言:TypeScript 表达式语法 图片/属性和事件需要特定的ng指令...9.您对Angular中的控制器了解多少? 控制器是JavaScript函数,可为HTML UI提供数据和逻辑。顾名思义,它们控制数据如何服务器流到HTML UI。 10....Angular指令分为三部分: 组件指令 结构指令 属性指令 12.什么是数据绑定?...26.我们可以在哪种类型的组件上创建自定义指令Angular支持创建以下内容的自定义指令: 元素指令 -当遇到匹配的元素时,指令将激活。 属性 -当遇到匹配的属性时,指令将激活。...## 30.组件指令的生命周期挂钩是什么? Angular组件具有离散的生命周期,其中包含出生到死亡过渡的不同阶段。

    41.4K51

    Angular 2 架构(上)

    (Data Binding) 6、指令 (Directives) 7、服务 (Services) 8、依赖注入 (Dependency Injection) 下图展示了每个部分是如何相互工作的: 图中的模板...Angular 有三种类型的视图类: 组件指令 和 管道 。 exports - 声明( declaration )的子集,可用于其它模块中的组件模板 。...组件是构成 Angular 应用的基础和核心,可用于整个应用程序中。 组件知道如何渲染自己及配置依赖注入。 组件通过一些由属性和方法组成的 API 与视图交互。...创建 Angular 组件的方法有三步: @angular/core 中引入 Component 修饰器 建立一个普通的类,并用 @Component 修饰它 在 @Component 中,设置 selector...我们可以通过使用模板来定义组件的视图来告诉 Angular 如何显示组件

    1.4K10

    AngularDart4.0 指南- 模板语法二 顶

    以下是如何设置没有绑定的属性: <!...他们列表中选择项目。 他们点击按钮。 这样的用户操作可能导致数据流向相反的方向:元素到组件。 了解用户操作的唯一方法是侦听某些事件,例如按键,鼠标移动,点击和触摸。...谁可以记住要设置哪个元素属性以及哪个元素事件发出用户更改? 如何输入框中提取当前显示的文本,以便更新数据属性? 谁想每一次都看看?...“结构指令”指南介绍了结构指令的深入细节,您将在其中学习以下内容: 为什么必须在指令名称前加上前缀星号(*)。 当指令没有合适的宿主元素时如何对元素进行分组。 如何编写自己的结构指令。...当NgIf为false时,AngularDOM中删除元素及其后代。 它摧毁了他们的组件,潜在地释放了大量的资源,从而带来了更加快速的用户体验。 展示/隐藏技术适合少数几个后代的元素。

    30K20

    Angular 16 正式版发布

    在之前的Angularv15中,Angular团队通过将独立API开发者预览版升级至稳定版,在Angular的简易性和开发者体验方面达到了一个重要的里程碑。...三、改进对独立组件/指令/管道的工具 Angular 是一个被数百万开发人员用于许多关键使命的应用程序框架,我们认真对待重大变更,我们 几年前 就开始探索独立的 APIs,2022 年我们在开发者预览下发布了它们...现在,可以将以下数据传递给路由组件的输入: 路由 data — resolvers 和 data 属性 Path 参数 Query 参数 以下是如何访问路由 resolver 数据的示例: const...在 Angular v16 中,我们实现了一个跨越框架、Universal、CDK、Material 和 CLI 的新功能,该功能允许你为 Angular 内联的组件的样式指定 nonce 属性。...新功能允许你注入与组件指令、服务或管道相对应的DestroyRef ,并注册onDestroy 生命周期钩子函数。

    2.5K10

    2、Angular JS 学习笔记 – 双向数据绑定和Scope概念

    作用域的特点: 作用域提供$watch接口监测模型的变化 作用域提供$apply接口传播angular体系外的任何的模型变化 作用域可以是嵌套的限制访问应用组件属性,同时提供共享模型的属性。...相似的方式,控制器可以定义行为到作用域中,这里是sayHello方法,当用户点击greet按钮的时候将会执行;sayHello方法可以读取username属性并且创建greeting属性。...这里演示了作用域中的绑定到html input 组件上的属性会自动更新。 渲染{{greeting}}的逻辑包括: 获取与模板上{{greeting}}相关的作用域。...DOM获取到作用域: 作用域附在dom元素的$scope属性上,可以获取用来做debug的目的,它不太可能在应用中使用。根作用域被附在有ng-app指令的dom元素上。...你可以dom元素上使用angular.element(aDomElement).scope()函数获取作用域。查看指令文档了解更多的关于作用域隔离的信息。

    13.2K20

    (转) 别再对 Angular 表单的 ControlValueAccessor 感到迷惑

    网上有大量文章描述如何实现这个接口,但很少说到它在 Angular 表单架构里扮演什么角色,如果你不仅仅想知道如何实现,还想知道为什么这样实现,那本文正合你的胃口。...然后我将展示如何封装第三方组件作为 Angular 组件,以及如何使用输入输出机制实现组件间通信(译者注:Angular 组件间通信输入输出机制可参考官网文档),最后将展示如何使用 ControlValueAccessor...任何一个组件指令都可以通过实现 ControlValueAccessor 接口并注册为 NG_VALUE_ACCESSOR,从而转变成 ControlValueAccessor 类型的对象,稍后我们将一起看看如何做...由于我们将实现的是新的组件通信方式,所以不需要标准的输入输出属性绑定方式,那就移除相关代码吧。...(译者注:作者先实现标准的输入输出属性绑定的通信方式,又要删除,主要是为了引入新的表单组件交互方式,即 ControlValueAccessor。)

    3.8K20
    领券