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

Angular -如何在NgFor中创建动态模板变量

Angular是一种流行的前端开发框架,它使用TypeScript编写,并由Google维护。Angular提供了丰富的功能和工具,使开发人员能够构建现代化的Web应用程序。

在NgFor中创建动态模板变量可以通过使用ng-template指令和TemplateRef类来实现。下面是一个示例:

代码语言:txt
复制
<ng-container *ngFor="let item of items; let i = index">
  <ng-template #dynamicTemplate>
    <div #dynamicVar>{{ item }}</div>
  </ng-template>
</ng-container>

在上面的示例中,我们使用ng-container元素来包裹ng-template元素,并使用*ngFor指令来循环遍历items数组。在ng-template元素中,我们定义了一个动态模板变量dynamicVar,它会在每次循环迭代时动态生成。

要在组件中访问动态模板变量,我们可以使用ViewChild装饰器和TemplateRef类。在组件类中添加以下代码:

代码语言:txt
复制
import { Component, ViewChild, TemplateRef } from '@angular/core';

@Component({
  selector: 'app-example',
  template: `
    <ng-container *ngFor="let item of items; let i = index">
      <ng-template #dynamicTemplate>
        <div #dynamicVar>{{ item }}</div>
      </ng-template>
    </ng-container>
  `
})
export class ExampleComponent {
  @ViewChild('dynamicTemplate', { read: TemplateRef }) dynamicTemplate: TemplateRef<any>;
  @ViewChild('dynamicVar') dynamicVar: ElementRef;

  items = ['Item 1', 'Item 2', 'Item 3'];

  ngAfterViewInit() {
    console.log(this.dynamicTemplate); // 输出动态模板的引用
    console.log(this.dynamicVar); // 输出动态模板变量的引用
  }
}

在上面的示例中,我们使用ViewChild装饰器来获取动态模板和动态模板变量的引用。通过设置{ read: TemplateRef }选项,我们告诉Angular我们想要获取TemplateRef类的实例。

这是一个简单的示例,演示了如何在NgFor中创建动态模板变量。根据具体的应用场景,你可以根据需要自定义模板,并在组件中进行相应的操作。

腾讯云提供了丰富的云计算产品和服务,适用于各种应用场景。你可以访问腾讯云官方网站(https://cloud.tencent.com/)了解更多关于腾讯云的信息和产品介绍。

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

相关·内容

Angular 6.x 快速入门

基础知识 ngIf 指令简介 该指令用于根据表达式的值,动态控制模板内容的显示与隐藏。它与 AngularJS 1.x 的 ng-if 指令的功能是等价的。... ngFor 指令简介 该指令用于基于可迭代对象的每一项创建相应的模板。它与 AngularJS 1.x 的 ng-repeat 指令的功能是等价的。...1.x 的表单 ) Reactive Forms - 响应式表单 本小节主要介绍模板驱动式的表单,接下来我们来演示如何通过表单来为我们的之前创建的 UserComponent 组件,增加让用户自定义技能的功能...,: @Injectable({ providedIn: 'root' }) export class MemberService {} (2) 在应用的地方,导入已创建的服务,: import...router-outlet 指令 该指令用于告诉 Angular 在哪里加载组件,当 Angular 路由匹配到响应路径,并成功找到需要加载的组件时,它将动态创建对应的组件,并将其作为兄弟元素,插入到

14.1K20

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

NgFor NgFor是一个迭代指令 - 一种呈现项目列表的方式。 您可以定义一个HTML块来定义应该如何显示单个项目。 您告诉Angular将该块用作呈现列表每个项目的模板。...Angular把这条指令翻译成一个围绕宿主元素的,然后重复使用这个模板为列表的每个英雄创建一组新的元素和绑定。 在“结构指令”指南中了解微语法。...模板输入变量 hero之前的let关键字创建一个名为hero的模板输入变量ngFor指令迭代由父组件的heroes属性返回的heroes,并在每次迭代期间将hero设置为列表的当前项目。...* ngFor与index(索引) NgFor指令上下文的index属性返回每个迭代项目的从零开始的索引。 您可以捕获模板输入变量的index,并在模板中使用它。...模板引用变量警告说明 模板引用变量(#phone)与模板输入变量(let phone)不同,您在*ngFor可能看到的那样。 了解“结构指令”指南中的差异。 引用变量的范围是整个模板

29.9K20

AngularDart 4.0 高级-结构指令 顶

microsyntax解析器将该字符串转换为上的属性: let关键字声明了模板引用的模板输入变量。这个例子的输入变量是hero,i和odd。...研究NgIf和NgFor的源代码是了解更多信息的好方法。 模板输入变量 模板输入变量是一个变量,其值可以在模板的单个实例引用。 在这个例子中有几个这样的变量:hero,i和odd。...您可以在其他结构指令的定义再次使用相同的变量名称。 您通过在#(#var)前缀加上变量名称来声明一个模板引用变量。 引用变量是指其附加的元素,组件或指令。 它可以在整个模板的任何地方访问。...模板输入和引用变量名称都有其自己的名称空间。 let hero的hero变量永远不会和#hero的hero一样。...虽然很少有理由在模板属性或元素形式应用结构指令,但了解Angular创建并了解它的工作原理仍然很重要。 当你编写自己的结构指令时,你会参考。

16K20

AngularDart4.0 指南- 显示数据 顶

您可以通过将HTML模板的控件绑定到Angular组件的属性来显示数据。 在这个页面,您将创建一个包含英雄列表的组件。 您将显示英雄名单的列表,并有条件地在列表下方显示一条消息。...请注意,您不要调用new来创建AppComponent类的实例。 Angular正在为你创建一个实例。 怎样创建的? @Component注解的CSS选择器指定了一个名为的元素。...Angular ngFor指令来显示英雄列表的每个项目。...有关更多信息,请参阅模板语法页面。 注意ngFor指令的hero变量; 它是模板输入变量的一个例子。 在“模板语法”页面的microsyntax部分阅读有关模板输入变量的更多信息。...Angular为列表的每个项目复制,将hero变量设置为当前迭代的项目(英雄)。 Angular使用该变量作为双曲花括号内插的上下文。

5.3K10

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

表达式部分将hero标识为模板输入变量,其中包含每个迭代的英雄详情。 你可以在模板引用这个变量来访问当前英雄的属性。...在显示数据的Showing a list property with *ngFor部分阅读更多关于ngFor模板输入变量模板语法页的ngFor部分 在节点内添加内容hero模板变量来显示英雄属性...> {{hero.name}} 要在模板中使用Angular指令,需要在组件的@Component注解的指令参数列出。...onSelect(hero)表达式调用AppComponent方法onSelect(),传递模板输入变量hero作为参数。 这是你在ngFor指令定义的同一个英雄变量。...您了解了如何在组件模板中使用核心指令ngIf和ngFor。 您在CSS文件定义了样式,并使用它们来设置应用程序的样式。 你的应用应该看起来像这个实例(查看源代码)。

3K30

Angular DOM 抽象概述

为我们开发者提供了 元素,在 Angular 内部它主要应用在结构指令,比如 *ngIf、*ngFor 等。...(embedded view) 遍历内嵌视图中的 rootNodes,动态的插入 node 虽然我们已经成功的显示出 template 模板元素的内容,但发现整个流程还是太复杂了,那有没有简单地方式呢...动态创建组件的流程如下: 获取装载动态组件的容器 在组件类的构造函数,注入 ComponentFactoryResolver 对象 调用 ComponentFactoryResolver 对象的 resolveComponentFactory...() 方法创建 ComponentFactory 对象 调用组件容器对象的 createComponent() 方法创建组件并自动添加动态组件到组件容器 基于返回的 ComponentRef 组件实例...对于列表声明的每个组件,Angular 将会创建对应的一个 ComponentFactory 对象,并将其存储在 ComponentFactoryResolver 对象

3.5K30

Angular2 之 结构型指令几个概念

Angular 有一个强力的模板引擎,它能让你轻松维护元素的DOM树结构。 Angular指令可分为三种 组件 属性型指令 结构型指令 组件 组件其实就是一个带模板的指令。...当ngIf重新变成true的时候,angular会重新创建该组件及其子树。angular会重新运行每个组件的初始化逻辑。...控制Template标签内DOM添加与显示,在模板级别使用的。 在Angular应用之外,标签的默认CSS属性display是none 。 它的内容存在于一个隐藏的文档片段。...* 我们通过TemplateRef来访问模板。渲染器是ViewContainerRef。 * 我们把它们都作为私有变量注入到构造函数。...要么显示的包含在Template标签,要么隐式的使用*这种语法糖去包装在Template标签。它简化了ngIf和ngFor —— 无论是写还是读。

3K20

Angular--Module的使用

NgModule 可以将其组件和一组相关代码(服务)关联起来,形成功能单元。...一个Angular应用至少有一个用于启动的根模块(root module), 根模块通常命名为AppModule,并位于一个名叫 app.module.ts 的文件。...providers —— 本模块向全局服务贡献的那些服务的创建器。 这些服务能被本应用的任何部分使用。(你也可以在组件级别指定服务提供商,这通常是首选方式。)...@NgModule 的参数是一个元数据对象,用于描述如何编译组件的模板,以及如何在运行时创建注入器。...app 时 CommonModule @angular/common 当你想要使用NgIf 和NgFor时 FormsModule @angular/forms 当要构建模板驱动表单时 ReactiveFormsModule

4.9K40

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

主要的Angular库是angular,大多数app模块导入如下: import 'package:angular/angular.dart'; Angular包有其他重要的库,angular.security...类似于* ngFor,{{hero.name}},(click),[hero]和的代码使用Angular模板语法。...注意是如何在原生HTML元素合适的存放。 自定义组件与原生HTML在相同的布局无缝混合。 元数据 ? 元数据告诉Angular如何处理一个类。...Angular模板动态的。 当Angular呈现它们时,它根据指令给出的指示转换DOM。 指令是一个带有@Directive注解的类。...如果请求的服务实例不在容器,那么在将服务返回给Angular之前,注入器将创建一个并将其添加到容器。 当所有请求的服务已经解析并返回时,Angular可以用这些服务作为参数调用组件的构造函数。

7.9K30

AngularDart4.0 指南- 表单 顶

使用模板引用变量在HTML元素之间共享信息。 您可以在Plunker运行实例(查看源代码)并从那里下载代码。...模板驱动的形式 您可以通过使用本页描述的特定于表单的指令和技术在Angular模板语法编写模板来构建表单。 您也可以使用响应式(或模型驱动)方法来构建表单。...要创建这样的视觉反馈,您将使用Bootstrap自定义表单类 is-valid和is-invalid。 将名为name的模板引用变量添加到Name 标记。...如果没有Angular的帮助,你需要做什么才能将按钮的启用/禁用状态连接到表单的有效性? 对你来说,这很简单: 在(增强的)表单元素上定义一个模板引用变量。 在多处的按钮引用该变量。...模板引用变量heroForm和name。 双向数据绑定([(ngModel)])。 用于验证和表单元素更改跟踪的NgControl 指令。

17.4K30

在前端理解MVC服务之 Angular篇(完结)

介绍 本文是该系列的第三篇,旨在了解 MVC 体系结构如何创建前端应用程序。目的是了解如何构建前端应用程序。...View 模型的直观表示,即用户所看到的部分 Controller - Model与View的链接 下图是我们的项目结构 该文件将充当一个画布,使用 元素动态构建整个应用程序。...下面是为此示例创建模板(一个角度丰富的 HTML 版本): Users <form [formGroup]="userForm" (ngSubmit)="add(userForm.value...但是,我们注意到,前几部分<em>中</em>的许多 DOM 操作代码已通过 <em>Angular</em> 得到解决,它们提供了两个结构指令,<em>如</em> @ <em>ngFor</em> 和 _ ngIf,它们允许从<em>模板</em>本身轻松操作 DOM。...另一个有趣的点是,<em>Angular</em> 在此示例<em>中</em>帮助我们使用反应形式。有了这些,<em>模板</em>连接到控制器,而无需我们发送处理程序来建立连接。

4.1K20

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

您可以使用组件和指令出现的新元素和属性来扩展模板的HTML词汇表。 在下面的章节,您将学习如何通过数据绑定来动态获取和设置DOM(文档对象模型)值。...{{hero.name}} {{heroInput.value}} 表达式术语的上下文是模板变量和组件成员的混合...如果引用这些名称空间的名称,则模板变量名称优先,后面是指令的上下文,最后是组件的成员名称。 前面的例子显示了这样一个名字冲突。 该组件具有hero属性,而* ngFor定义了英雄模板变量。...这个视图在整个渲染过程应该是稳定的。 快速执行 Angular在每个更改检测周期后执行模板表达式。 更改检测周期由许多异步活动触发,承诺的分辨率,http结果,计时器事件,按键和鼠标移动。...模板以这种方式创建结构并初始化属性值。

5.1K10

Angular 2 + 折腾记 :(2)初步认识angular2,不一样的开发模式

}) export class AppModule { }复制代码 ---- 常见模板指令用法解释 {{item | SliceStr:1:2:'...' }}: 可以响应组件内对应的item字段值变化...[class.a]或者[style.font-size]:单一操作类或者某个行内样式 数据遍历(*ngFor) *ngFor="let i of item; let index = index":...可以用这个来遍历数组对象,let index = index意思是创建一个局部遍历把当前遍历的索引保存到你的自定义变量index 动态渲染(*ngIf) *ngIf="item" : 比如loading...到视图全部渲染就经常用到这个,当前不在乎低版本的可以用[hidden]来控制切换,因为*ngIf这种动态渲染节点的还是有一定的性能消耗的。。...---- 总结 这一篇没有涉及到路由这些和表单这些; 准备拆成两个文章来说; 路由的配置及懒加载这些, 模板驱动的表单及响应式表单[嵌套表单响应等],回车键触发搜索等。。

6.2K20

Angular 2.x折腾记 :(2)初步认识angular2,不一样的开发模式

}) export class AppModule { } ``` 常见模板指令用法解释 {{item | SliceStr:1:2:'...' }}: 可以响应组件内对应的item字段值变化...[class.a]或者[style.font-size]:单一操作类或者某个行内样式 数据遍历(*ngFor) *ngFor="let i of item; let index = index": 可以用这个来遍历数组对象...,let index = index意思是创建一个局部遍历把当前遍历的索引保存到你的自定义变量index 动态渲染(*ngIf) *ngIf="item" : 比如loading到视图全部渲染就经常用到这个...,当前不在乎低版本的可以用[hidden]来控制切换,因为*ngIf这种动态渲染节点的还是有一定的性能消耗的。。...总结 这一篇没有涉及到路由这些和表单这些; 准备拆成两个文章来说; 路由的配置及懒加载这些, 模板驱动的表单及响应式表单[嵌套表单响应等],回车键触发搜索等。。

8910

Angular 6.x 表单快速入门

Angular 中有两种表单: Template Driven Forms - 模板驱动式表单 (类似于 AngularJS 1.x 的表单 ) Reactive Forms - 响应式表单 Template...,把验证逻辑抽离到组件类 手动创建 Form Model (同步) 方便的跟踪表单控件值的变化 易于动态添加表单控件 易于单元测试 本文主要介绍 Template Driven Forms (模板驱动式表单...第一节 - 创建最简单的输入框 如何实现双向绑定? 在 Angular 表单,我们通过 ngModel 指令来实现双向绑定。...在 Angular ,我们可以通过 #userName="ngModel" 方式获取 ngModel 对象,然后通过该对象的 errors 属性,来获取对应验证规则 ( required, minlength...在 Angular ,我们可以使用熟悉的 标签来创建表单。

4.6K20
领券