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

如何使用父/子组件通过NgFor将NgClass应用于单次迭代?

在Angular中,可以使用父/子组件结合NgFor指令和NgClass指令来将NgClass应用于单次迭代。下面是一个完整的解答:

父组件中,首先需要定义一个数组,用于存储要迭代的数据。然后,在模板中使用NgFor指令来迭代数组,并将每个元素传递给子组件。

代码语言:txt
复制
// 父组件
import { Component } from '@angular/core';

@Component({
  selector: 'app-parent',
  template: `
    <div *ngFor="let item of items">
      <app-child [data]="item"></app-child>
    </div>
  `,
})
export class ParentComponent {
  items: any[] = [
    { name: 'Item 1', isActive: true },
    { name: 'Item 2', isActive: false },
    { name: 'Item 3', isActive: true },
  ];
}

在子组件中,接收父组件传递的数据,并使用NgClass指令来根据数据的isActive属性应用不同的样式。

代码语言:txt
复制
// 子组件
import { Component, Input } from '@angular/core';

@Component({
  selector: 'app-child',
  template: `
    <div [ngClass]="{ 'active': data.isActive }">
      {{ data.name }}
    </div>
  `,
  styles: [
    `
    .active {
      color: blue;
    }
    `,
  ],
})
export class ChildComponent {
  @Input() data: any;
}

在上述代码中,父组件通过NgFor指令迭代items数组,并将每个元素传递给子组件。子组件接收到数据后,使用NgClass指令来根据isActive属性判断是否应用active样式。

这样,父/子组件结合NgFor和NgClass指令,可以实现根据数据动态应用样式的效果。

推荐的腾讯云相关产品:腾讯云云服务器(CVM)和腾讯云云数据库MySQL。

  • 腾讯云云服务器(CVM):提供弹性计算能力,可根据业务需求灵活调整配置,支持多种操作系统和应用场景。了解更多:腾讯云云服务器(CVM)
  • 腾讯云云数据库MySQL:提供高性能、可扩展的关系型数据库服务,支持自动备份、容灾和监控等功能。了解更多:腾讯云云数据库MySQL
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

angular组件的基本使用

angular组件的基本使用 组件 组件模板 ng generate component xxx 新建组件(大驼峰命名) 属性绑定 public...通讯方案 直接的父子关系,组件直接访问组件的 public 属性和方法 直接的父子关系,借助于 @Input 和 @Output 进行通讯 没有直接关系,借助于 Service 例进行通讯 利用...cookie 和 localstorage 进行通讯 利用 Session 进行通讯 直接调用 组件访问组件方法 //组件定义一个public的方法,组件直接调用 //组件 public...click)="child.children()" class="btn btn-success">直接调用组件 组件导入组件直接访问 //组件 @ViewChild(ChildComponent...(event):void{ this.follow.emit('follow') } //组件 (follow)="doSomething()" 利用 Service 例进行通讯

1.5K30

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

NgFor NgFor是一个迭代指令 - 一种呈现项目列表的方式。 您可以定义一个HTML块来定义应该如何显示单个项目。 您告诉Angular将该块用作呈现列表中每个项目的模板。...下面是NgFor应用于的例子: {{hero.name}} 您也可以NgFor应用于组件元素,如下例所示: <hero-detail...ngFor指令迭代组件的heroes属性返回的heroes,并在每次迭代期间hero设置为列表中的当前项目。 要访问hero的属性,请参考ngFor宿主元素(或其后代内)中的hero输入变量。...* ngFor与index(索引) NgFor指令上下文的index属性返回每个迭代中项目的从零开始的索引。 您可以捕获模板输入变量中的index,并在模板中使用它。...例如,当您使用myClick选择器指令应用于标记时,您希望绑定到的事件属性也称为myClick。

29.9K20

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

组件类中,通过使用 @Component 装饰器 1 用来类声明为组件类,并为这个组件类配置一些元数据 2,以决定该组件在运行期间该如何处理、实例化和使用 装饰器中存在三个基础的配置参数,用来完成组件与视图之间的关联...@Input 用来获取数据,@Output 用来向外发送数据 4.4.2、组件获取组件信息 在组件中,添加对于组件的引用,并将需要传递的数据 or 方法绑定到组件上 传递数据直接组件中的属性值赋值给绑定在组件上的属性就可以了...传递方法时,绑定在组件上的属性是组件方法的名称,此处不能加 () ,否则就会直接执行该组件的方法 在传递数据给组件时,也可以通过 this 来指代父组件,从而将整个组件作为数据绑定子组件上...4.4.3、组件获取组件信息 使用 @ViewChild 装饰器获取 在组件上定义一个模板引用变量 组件内容: 1、使用 @ViewChild 装饰器获取组件数据...,就可以通过组件使用事件绑定的方式绑定到一个组件事件,通过 $event 获取到组件传递的数据值 组件内容: 2、使用 @Output 装饰器配合 EventEmitter

15.8K30

Angular: 最佳实践

我们应该为我们数据添加类型限定,下面有些有用的知识点: 使用类型联合和交集。官网解释了如何使用 TS 编译器组合类型以轻松工作。这在处理来自 RESTful API 数据的时非常有用。...并且在模版中的每个地方都会显示通知,你可以使用 ngClass 设置未通知的样式。现在,我们想将通知的状态与枚举值进行比较,我们必须将枚举导入组件。...小经验:当我们在带有元素的 HTML 元素上编写 ngFor 指令时,请考虑将该元素分离为单独的组件,就像下面: 复制代码 这在组件中写更少的代码,让后允许委托任何重复逻辑到组件。...return this.get(`${this.relativeUrl}${id.toString()}`); } } 复制代码 现在,你只需要将 API 调用的逻辑抽象到基类中,现在就可以专注于你接收哪些数据以及如何处理它

2.8K40

AngularDart 4.0 高级-结构指令 顶

指南在描述如何指令应用于HTML模板中的元素时引用了属性(attribute)名称。 还有其他两种Angular指令,在其他地方被广泛描述:(1)组件和(2)属性指令。...NgFor和NgSwitch ...指令遵循相同的模式。 *ngFor内部详解 Angular以类似的方式*ngFor转换为从星号(*)语法通过模板属性到模板元素。...您将尝试*ngFor和*ngIf放在同一宿主元素上。 Angular不会允许。 您仅可以一个结构指令应用于宿主元素。 原因是简单。 结构指令可以用宿主元素及其后代完成复杂的事情。...打算在其他地方使用的p span样式无意中应用于此处。 另一个问题:一些HTML元素要求所有直系孩子属于特定类型。 例如,元素需要元素。...在没有合适的宿主元素时使用作为分组元素。 Angular星号(*)语法解析为。 NgIf,NgFor和NgSwitch内置指令如何工作。

16K20

Angular学习笔记(一)

组件 组件负责控制视图,通过一些由属性和方法组成的 API 与视图交互。 模板 模板以 HTML 形式存在,告诉 Angular 如何渲染组件。 元数据 元数据告诉 Angular 如何处理一个类。...@Component 的配置项包括: selector - CSS 选择器,它告诉 Angular 在级 HTML 中查找标签,创建并插入该组件。...Angular 使用依赖注入来提供新组件以及组件所需的服务。 2. 模板与数据绑定 绑定的类型可以根据数据流的方向分成三类: 从数据源到视图、从视图到数据源以及双向的从视图到数据源再到视图。...ngAfterContentInit() 当把内容投影进组件之后调用。 第一 ngDoCheck() 之后调用,只调用一。 只适用于组件。...ngAfterViewInit() 初始化完组件视图及其视图之后调用。 第一 ngAfterContentChecked() 之后调用,只调用一。 只适合组件

3.3K20

AngularDart4.0 英雄之旅-教程-04明细 顶

-- each hero goes here --> 下一步你添加英雄名字 使用ngFor指令罗列英雄 目标是组件中的英雄列表绑定到模板,迭代它们,并单独显示它们。...它表示元素及其元素构成一个主模板。 ngFor指令遍历组件的英雄列表并为该列表中的每个英雄呈现该模板的一个实例。...接下来,您将通过selectedHero组件属性主链接到详细信息,该属性绑定到单击事件。...您了解了如何组件模板中使用核心指令ngIf和ngFor。 您在CSS文件中定义了样式,并使用它们来设置应用程序的样式。 你的应用应该看起来像这个实例(查看源代码)。...一个应用程序不应该是一个单一的组件。 在下一页中,您将将应用程序拆分为组件,并使它们一起工作。

3K30

Angular快速学习笔记(2) -- 架构

[hero]属性绑定把组件 HeroListComponent 的 selectedHero 的值传到组件 HeroDetailComponent 的 hero 属性中。...数据绑定在模板及其组件之间的通讯中扮演了非常重要的角色,它对于组件组件之间的通讯也同样重要。 ? 组件通过属性绑定向组件传递数据,而组件通过事件绑定向与组件通信。...结构型指令 结构型指令通过添加、移除或替换 DOM 元素来修改布局 <app-hero-detail *ngIf="selectedHero...和 <em>ngClass</em>)。...<em>如何</em><em>使用</em>: 在 Angular 中,要把一个类定义为服务,就要用 @Injectable 装饰器来提供元数据,以便让 Angular 可以把它作为依赖注入到<em>组件</em>中 <em>使用</em> @Injectable 装饰器来表明一个<em>组件</em>或其它类

5.2K20

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

学习如何编写显示数据并在数据绑定的帮助下使用用户事件的模板。 Angular应用程序管理用户看到和可以做的事情,通过组件类实例(组件)和面向用户的模板的交互来实现这一点。...您可以使用组件和指令出现的新元素和属性来扩展模板的HTML词汇表。 在下面的章节中,您将学习如何通过数据绑定来动态获取和设置DOM(文档对象模型)值。...然后,您将学习如何使用封装了HTML的组件创建新元素,并将它们放入模板中,就好像它们是原生HTML元素一样。 另一个是设置自定义组件的模型属性(组件组件进行通信的一个好方法): <hero-detail [hero]="currentHero...一<em>次</em>性字符串初始化在标准HTML中是常规的,并且它对于指令和<em>组件</em>属性也同样适用。 以下示例<em>将</em>HeroDetailComponent的prefix属性初始化为固定字符串,而不是模板表达式。

5.1K10

AngularDart4.0 指南- 表单 顶

本页面向您展示了如何从头构建一个简单的表单。一路上你学习如何: 用组件和模板构建一个Angular表单。 使用ngModel创建读取和写入输入控制值的双向数据绑定。...顺便说一句,您可以注入数据服务来获取和保存真实数据,或者这些属性作为输入和输出(请参阅“模板语法”页面中的输入和输出属性)来绑定到组件。 这不是现在的问题,这些未来的变化不会影响表单。...您将在表单中添加一个select,并使用ngFor(先前在“显示数据”页面中看到的一种技术)选项绑定到powers列表。...你知道如何从早期的页面做到这一点。 显示数据教导属性绑定。 用户输入显示如何使用事件绑定监听DOM事件以及如何使用显示的值更新组件属性。 现在您需要同时显示,聆听和提取。...在此页面中,您学习了如何使用以下功能: 一个HTML表单模板和一个带有@Component注解的表单组件类。 表单提交,通过ngSubmit事件绑定处理。

17.4K30

【Angular教程】-组件初识|8月更文挑战

前提: 准备一个空的angular项目(ng new angular-course) 与Angular组件的第一会面 **通过创建组件命令: ****ng g c components/HelloWorld...selector: 标注组件的名称,在使用组件的时候使用的就是它 templateUrl: 标注html模板的路径 styleUrls: 标注html模板使用的样式的路径,我们看到是用的数组格式,说明传递多个样式文件应该是没有问题的..."不显示" : "显示" }} Hello World NgFor(内置): 给组件ts添加属性: public list: Array...class3{ font-size: 20px; color: chartreuse; } 在组件html模板中绑定的时候可以通过变量来选择性的开启和关闭部分样式 <div [ngClass]...中的管道与Vue中的过滤器雷同,均可以使数据按指定的格式进行显示,同样使用管道符来操作 内置管道: 演示: 时间格式化为统一样式 DatePipe: {{ currentTime | date

1.9K20

angular面试题及答案_angular面试

:在angular初始化组件及其组件的视图之后调用,只调用一,只适用于组件 ngAfterViewChecked:每次做完组件视图和视图的变更检测之后调用,只适用于组件 ngOnDestroy:...指令分类 组件:用于构建UI组件,继承于Directive类 属性指令:用于改变组件的外观或行为 ngClass ngStyle 结构指令:用于动态添加或删除DOM元素来改变DOM布局 ngIf ngFor...父子组件之间的数据传递 @Input 组件组件传递数据和传递方法(组件使用) @output 组件传值给组件 (事件传递的方式)(组件使用) //组件使用事件发射器 @output...() somethingChanged = new EventEmitter(); somethingChanged.emit(value); 使用@ViewChid 组件通过局部变量获取组件的引用...,主动获取组件的数据和方法(组件使用) 4.

10.9K120

浅谈Angular

ng-show本质上设置元素的display值为none,只是设置样式,DOM结构还在,而*ngIf是真正意义上的从DOM结构中移除 *ngFor--动态创建DOM结构 ngSwitch--通过匹配case...可以给@Input装饰器内部填写一个元数据,这个值是外部使用的名字 内部还是使用原来的名字 3.如果想要给指令添加的元素绑定的事件,需要使用@HostListener装饰器 如果要通过指令控制DOM的显隐...ngOnInit方法只会在其被创建时走一,如果该组件不销毁,init方法不会再走,导致当前数据无法更新 解决办法: 使用RxJS解决,RxJS提供响应式开发(基于观察者模式),我们可以订阅某个值...从Observable的中文名:”可观察的”就能看出,Observable的作用是可以起到类似监听的作用,但它的监听往往都是在跨页面中, 6.组件间通信: 1. -- @Input装饰器声明输入属性...,要声明在组件里 2. -- @Output装饰器声明事件,要声明在组件里 3.兄弟之间 -- 中间人模式 拓展:事件源对象 在事件中,当前操作的那个元素就是事件源。

4.4K10

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

您可以通过使用Angular的标记组合HTML 模板,编写组件类来管理这些模板,在服务中添加应用程序逻辑以及在模块中装入组件和服务来编写Angular应用程序。 然后,通过引导根模块启动应用程序。...[hero]属性绑定将来自HeroListComponent的selectedHero的值传递给HeroDetailComponent的hero属性。...用户的更改也会返回到组件属性重置为最新值,就像事件绑定一样。 Angular在每个JavaScript事件循环中处理所有数据绑定,从应用程序组件树的根到所有组件。 ?...数据绑定在模板及其组件之间的通信中起着重要的作用。 数据绑定对于组件组件之间的通信也很重要。 指令 ? Angular模板是动态的。...Angular通过简单地应用程序逻辑分解为服务,并通过依赖注入这些服务提供给组件,从而帮助您遵循这些原则。 依赖注入 ? 依赖注入是一种提供一个类的新实例的方法,它需要完整的依赖关系。

7.9K30

Angular与React相关

说说你对组件的理解, 你如何看待组件化? 组件:组件是元素的集合体可以扩展HTML元素,封装可重用的代码。...组件化 (把复杂的DOM结构封装到组件内部,只给外部提供组件的名字,使用者可以很方便的使用组件名展示复杂的DOM结构) 2. 什么是SPA, 如何实现SPA?...ngModel--实现数据双向绑定 *ngFor--动态创建DOM结构 ngSwitch--通过匹配case来控制元素的显隐 *ngIf--控制元素的显隐性...1. -- @Input装饰器声明输入属性,要声明在组件里 2. -- @Output装饰器声明事件,要声明在组件里 3.兄弟之间 -- 中间人模式 5. angularJS...React如何进行组件间通信, 详细分别说明? 1. --props对象 2. --回调函数 3. 兄弟之间--中间人模式 10. React里路由传值的方式有几种?分别说明?

1.2K20

ng-content 中隐藏的内容

无论什么原因,通常情况下,你的内部组件不是包装器的直接节点。...为了解决这个问题,我们必须使用 ngProjectAs 属性,它可以应用于任何元素上。...但是如果你通过按钮进行切换操作,你会注意到计数器的值不会增加。这意味着我们的计数器组件只被实例化了一 - 从未被销毁和重新创建。...组件的生命周期被绑定到我们的应用程序组件而不是包装器的意义是,开发者可以掌控计数器只被实例化一,而不用了解第三方库的内部代码。 性能的原因更为重要。...The solution 为了让包装器能够控制其元素的实例化,我们可以通过两种方式完成:在我们的内容周围使用 元素,或者使用带有 “*” 语法的结构指令。

2.7K30
领券