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

如何在Angular2中设置动态#id(*ngFor)并从中获取取值?

在Angular2中,可以使用动态#id(*ngFor)来设置一个唯一的标识符,并从中获取取值。具体步骤如下:

  1. 在HTML模板中,使用*ngFor指令来循环遍历一个数组或对象,并设置一个动态的#id。例如:
代码语言:html
复制
<div *ngFor="let item of items; let i = index" [attr.id]="'item-' + i">
  {{ item }}
</div>

在上述代码中,我们使用了attr.id来动态设置div元素的id属性,值为"item-"加上当前索引i的值。

  1. 在组件中,可以使用@ViewChild装饰器来获取动态设置的#id的值。例如:
代码语言:typescript
复制
import { Component, ViewChild, ElementRef } from '@angular/core';

@Component({
  selector: 'app-example',
  template: `
    <div *ngFor="let item of items; let i = index" [attr.id]="'item-' + i">
      {{ item }}
    </div>
  `
})
export class ExampleComponent {
  @ViewChild('item-0') item0: ElementRef;
  @ViewChild('item-1') item1: ElementRef;
  // 可以根据需要继续定义其他的ViewChild

  items = ['item1', 'item2', 'item3'];

  ngAfterViewInit() {
    console.log(this.item0.nativeElement.textContent); // 输出:item1
    console.log(this.item1.nativeElement.textContent); // 输出:item2
    // 可以根据需要继续获取其他的动态#id的值
  }
}

在上述代码中,我们使用@ViewChild装饰器来获取动态设置的#id的值。通过指定对应的#id名称,可以在组件中获取到对应的元素引用。在ngAfterViewInit生命周期钩子函数中,可以通过this.item0.nativeElement来访问元素的属性和方法。

需要注意的是,每个动态#id对应的ViewChild需要分别定义,以便在组件中获取到对应的元素引用。

以上是在Angular2中设置动态#id(*ngFor)并从中获取取值的方法。在实际应用中,可以根据具体需求进行适当的调整和扩展。

腾讯云相关产品和产品介绍链接地址:

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

相关·内容

Angular2 VS Angular4 深度对比:特性、性能

接下来一起了解Angular2这个版本发布的原因以及如何将其添加到Web开发。 ...Angular2解决了这个问题,另外还添加了一些缺少的功能,子注入以及生命周期/范围控制。 注解: AtScript提供了连接元数据和功能的工具。...动态载入: 这是之前的Angular版本均不具备的功能,Angular2包含了这个功能,即使在开发人员忙碌时,也能够添加新的指令或控件。 模板: 在Angular2,模板编译过程是异步的。...scope: $scope 从Angular2删除了。...改进 *ngIf 和 *ngFor: 模板绑定语法目前支持一些少量有帮助的更改。现在,开发人员已经可以使用if/else设计​​语法,分配局部变量了。

8.7K20
  • 【开发指南】(三)认识ionic3

    混合式开发,即Hybird,至今可以说发展到第三代了,第一代和上述WebApp差不多,基于WebView + Cordova技术,不同的是网页放在了本地,通过获取网络接口数据实现展示,使用js调用原生功能...它只提供了使用JavaScript调用Native功能,在开发的时候还需要开发人员自己去实现诸如样式美化、页面切换、数据展示、弹出框、Modal窗体、日期选择器等功能或组件,为了提高开发效率,出现了各种前端框架,国外的...,另外还有内置指令的更灵活化,其它变化不大,具体更新如下: Angular 4.0 新的版本下,改进 AOT 编译器,分离 animations 包,缩小生成后的代码量,运行更快,改进ngIf 和ngFor...@IonicPage装饰器 ionic2导航器不是基于url的,如果想使用url访问就要通过DeepLinker来实现,这是比较麻烦的,而在新版本可以通过@IonicPage装饰器来实现。...并且可以更轻松的在项目中设置延迟加载,设置延迟加载页面的优先级,并为每个页面自定义配置。

    2.7K40

    Angular2 之 Animations

    Angular2的动画系统赋予了制作各种动画效果的能力,致力于构建出与原生CSS动画性能相同的动画。 Angular2的动画主要是和@Component结合在了一起。...使用要点 Angular2的动画是使用模型驱动的方式在两个状态之间进行转换,是由状态和状态之间的转场效果所定义的。 动画被定义在@Component元数据。...triggerName设置成表达式,不同的状态,来定义动画状态。如果状态发生改变。 state state具体定义的是每个状态的最终样式。...可以用三种方式定义持续时间: 作为一个普通数字,以毫秒为单位,:100 作为一个字符串,以毫秒为单位,:'100ms' 作为一个字符串,以秒为单位,:'0.1s' 延迟 延迟控制的是在动画已经触发但尚未真正开始转场之前要等待多久...template: ` <li *ngFor="let hero of heroes" (@flyInOut.start)="animationStarted($event)"

    1.9K10

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

    在此页面,您将扩展“Tour of Heroes”应用程序,以显示英雄列表,允许用户选择英雄显示英雄的详细信息。 完成此页面后,该应用应该看起来像这个实例(查看源代码)。...-- each hero goes here --> 下一步你将添加英雄名字 使用ngFor指令罗列英雄 目标是将组件的英雄列表绑定到模板,迭代它们,单独显示它们。...当用户选择一个英雄时,selectedHero变为非null,ngIf将英雄详细内容放入DOM评估嵌套的绑定。...您了解了如何在组件模板中使用核心指令ngIf和ngFor。 您在CSS文件定义了样式,使用它们来设置应用程序的样式。 你的应用应该看起来像这个实例(查看源代码)。...在下一页,您将将应用程序拆分为子组件,使它们一起工作。

    3K30

    Angular 6.x 基础教程

    第四节 - 事件进阶 获取鼠标事件 在第三节的示例,假如我们需要获取鼠标事件,那应该怎么办呢?...此外,onClick($event, myInput.value) 表达式,$event 的顺序是任意的,: <button (click)="onClick(myInput.value, $event...指令 在 Angular <em>中</em>我们可以使用 <em>ngFor</em> 指令来显示数组<em>中</em>每一项的信息。...第十节 - 组件样式 在 Angular <em>中</em>,我们可以在<em>设置</em>组件元数据时通过 styles 或 styleUrls 属性,来<em>设置</em>组件的内联样式和外联样式。...用过 AngularJS 1.x 的同学,对 ng-class 应该很熟悉,通过它我们能够根据条件,为元素<em>动态</em>的添加或移除对应的样式。在 Angular <em>中</em>,对应的指令是 ngClass 。

    15.6K20

    Angular的12个经典问题,看看你能答对几个?(文末附带Angular测试)

    要在Visual Studio代码设置codelyzer,我们可以在文件 - >选项 - >用户设置添加tslint规则的路径。...如何在Angular 2启用延迟加载? 大多数企业应用程序包含用各式各样的用于特定业务案例的模块。捆绑整个应用程序代码完成加载,会在初始调用时,产生巨大的性能开销。...将路由添加到顶层路由(app.routing.ts)设置loadChildren。loadChildren会从根文件夹获取绝对路径。...RouterModule.forRoot()会获取routes数组配置路由器。 在子模块中导入模块特定路由。 在子模块路由中,将路径指定为空字符串“”,也就是空路径。...其中一些是: 避免为你的组件使用/注入动态HTML内容。 如果使用外部HTML,也就是来自数据库或应用程序之外的地方,那么就需要清理它。 不要将外部网址放在应用程序,除非它是受信任的。

    17.3K80

    Angular DOM 抽象概述

    通过 DOM API 我们能够方便地获取指定元素,比如获取谷歌首页 id 为 q 的输入框: document.querySelector("#q"); 查询结果为: <input id="q" aria-hidden...作用 在应用层直接操作 DOM,就会造成应用层与渲染层之间强耦合,导致我们的应用无法运行在不同环境, Web Worker ,因为在 Web Worker 环境,是不能操作 DOM。...ngTemplateOutletContext 顾名思义是用于设置指令的上下文。...动态创建组件的流程如下: 获取装载动态组件的容器 在组件类的构造函数,注入 ComponentFactoryResolver 对象 调用 ComponentFactoryResolver 对象的 resolveComponentFactory...() 方法创建 ComponentFactory 对象 调用组件容器对象的 createComponent() 方法创建组件自动添加动态组件到组件容器 基于返回的 ComponentRef 组件实例

    3.5K30

    Angular 显示英雄列表

    最终,你会从远端的数据服务器获取它。但是目前,你需要创建一些模拟英雄(some mock heroes),假设这些数据是从远程服务器上获取的。...不要忘了 ngFor 前面的星号(*),它是该语法的关键部分。 浏览器刷新之后,英雄列表出现了。...在教程的第一章,你曾在 styles.css 为整个应用设置了一些基础的样式。 但那个样式表并不包含英雄列表所需的样式。...把显示英雄详情的 HTML 包裹在一个  。 并且为这个 div 添加 Angular 的 *ngIf 指令,把它的值设置为 selectedHero。...用户可以选择一个英雄,查看该英雄的详情。 你使用 *ngFor 显示了一个列表。 你使用 *ngIf 来根据条件包含或排除了一段 HTML。 你可以用 class 绑定来切换 CSS 的样式类。

    4.4K70

    AngularDart 4.0 高级-结构指令 顶

    当条件为false时,NgIf从DOM删除它的宿主元素,将它从DOM事件(它所依附的)中分离出来,将组件从Angular变化检测中分离出来销毁它。 组件和DOM节点可以被垃圾收集释放内存。...let-i和let-odd变量被定义为let i = indexlet odd = odd。 Angular将它们设置为上下文的index和odd 属性的当前值。...Angular设置let-hero为上下文的$implicit属性的值,NgFor已经用当前迭代的hero初始化了它的值。 API指南描述了额外的NgFor指令属性和上下文属性。...{{hero.name}} 如果没有宿主元素,通常可以将内容包装在本机HTML容器元素(,然后将该指令附加到该容器...您将通过TemplateRef获取内容通过ViewContainerRef访问视图容器。 你在指令构造函数中注入这两个类作为类的私有变量。

    16.1K20

    前端框架与库 - Angular基础:组件、模板、服务

    Angular 是一款由 Google 维护的流行前端框架,用于构建动态的 Web 应用。它基于 TypeScript,提供了丰富的功能,包括组件化架构、数据绑定、依赖注入等。...本文将深入浅出地介绍 Angular 的组件、模板和服务,探讨常见问题、易错点及如何避免,通过代码示例加深理解。组件组件是 Angular 的核心构建块,每个应用都是由多个组件组成的。...事件绑定:(event)="function()",用于绑定组件类的方法到元素的事件。服务服务是 Angular 中用于封装业务逻辑的类,通常用于数据获取、状态管理等。...性能问题undefined过度使用ngFor和ngIf可能导致不必要的渲染。优化这些指令的使用,例如,使用TrackBy函数减少重复渲染。...服务注入范围undefined理解正确设置服务的注入范围,'root'、'singleton'或在特定模块

    14610

    Angular 显示英雄列表

    最终,你会从远端的数据服务器获取它。但是目前,你需要创建一些模拟英雄(some mock heroes),假设这些数据是从远程服务器上获取的。...不要忘了 ngFor 前面的星号(*),它是该语法的关键部分。 浏览器刷新之后,英雄列表出现了。...在教程的第一章,你曾在 styles.css 为整个应用设置了一些基础的样式。 但那个样式表并不包含英雄列表所需的样式。...把显示英雄详情的 HTML 包裹在一个  。 并且为这个 div 添加 Angular 的 *ngIf 指令,把它的值设置为 selectedHero。...用户可以选择一个英雄,查看该英雄的详情。 你使用 *ngFor 显示了一个列表。 你使用 *ngIf 来根据条件包含或排除了一段 HTML。 你可以用 class 绑定来切换 CSS 的样式类。

    4K30

    实战 | Change Detection And Batch Update

    当与用户或服务器发生交互时,需要我们手动获取数据更新DOM,这个过程是繁琐的、易错的。...我们别急着下结论,我们知道应用程序状态的改变主要是下面三种情况引起的: Events - 点击按钮 Timers - setTimeout XHR - 从服务器获取数据 我们才测试了事件这一种情景,...综上,说setState是异步的需要加一个前提条件,在React调用的方法执行,这时我们需要通过回调获取到最新的state 相信这个道理大家不难理解,因为事件和生命周期方法都是React调用的,它想怎么玩就怎么玩...,例如: 设置了变化检测策略为OnPush的组件不走深度遍历,而是直接比较对象的引用来决定是否更新UI。...Vue Vue模板每个指令/数据绑定都有一个对应的watcher对象,当数据变化时,会触发watcher重新计算更新相应的DOM。

    3.2K20

    前端框架与库 - Angular基础:组件、模板、服务

    Angular 是一款由 Google 维护的流行前端框架,用于构建动态的 Web 应用。它基于 TypeScript,提供了丰富的功能,包括组件化架构、数据绑定、依赖注入等。...本文将深入浅出地介绍 Angular 的组件、模板和服务,探讨常见问题、易错点及如何避免,通过代码示例加深理解。 组件 组件是 Angular 的核心构建块,每个应用都是由多个组件组成的。...事件绑定:(event)="function()",用于绑定组件类的方法到元素的事件。 服务 服务是 Angular 中用于封装业务逻辑的类,通常用于数据获取、状态管理等。...性能问题 过度使用ngFor和ngIf可能导致不必要的渲染。优化这些指令的使用,例如,使用TrackBy函数减少重复渲染。 服务注入 忽略服务的注入范围可能导致内存泄漏或全局状态混乱。...服务注入范围 理解正确设置服务的注入范围,'root'、'singleton'或在特定模块。 通过理解和应用这些原则,你可以构建健壮、高效的 Angular 应用,避免常见的开发陷阱。

    18610
    领券