您可以通过将HTML模板中的控件绑定到Angular组件的属性来显示数据。 在这个页面中,您将创建一个包含英雄列表的组件。 您将显示英雄名单的列表,并有条件地在列表下方显示一条消息。...Angular ngFor指令来显示英雄列表中的每个项目。...Angular使用该变量作为双曲花括号内插的上下文。 在这种情况下,ngFor正在显示一个列表,但ngFor可以为任何Iterable对象重复项目。...在模板中使用任何Angular指令之前,您需要将它们列在组件的@Component注解的指令参数中。...回到app_component.dart并删除或注释掉英雄列表中的一个元素。 浏览器应该自动刷新,消息应该消失。 概要 现在你知道如何使用: 用双花括号插入来显示组件属性。 ngFor显示项目列表。
NgFor指令具有比本指南中显示的NgIf更多的功能,包括必需的和可选的。 至少NgFor需要一个循环变量(let hero)和一个列表(heroes)。...您可以在分配给ngFor的字符串中启用这些功能,这是您在Angular的microsyntax中编写的。...当你编写自己的结构指令时,可以使用这些微观语法机制。 研究NgIf和NgFor的源代码是了解更多信息的好方法。 模板输入变量 模板输入变量是一个变量,其值可以在模板的单个实例中引用。...满足Angular模板中的类似需求。 编写一个结构指令 在本节中,您将编写一个与NgIf相反的UnlessDirective结构指令。 NgIf在条件为true时显示模板内容。...括号定义了一个CSS属性选择器。 指令属性名称应使用lowerCamelCase拼写,并以前缀开头。 不要使用ng。 该前缀属于Angular。 选择适合您或您公司的简短内容。
在本页面,你将扩展《英雄指南》应用,让它显示一个英雄列表, 并允许用户选择一个英雄,查看该英雄的详细信息。 创建模拟(mock)英雄数据 你需要一些英雄数据以供显示。...Angular 会把所点击的 上的 hero 对象传给它,这个 hero 也就是前面在 *ngFor 表达式中定义的那个。...英雄们显示在列表中,并且所点英雄的详情也显示在了页面的下方。 修复 - 使用 *ngIf 来隐藏空白的细节 该组件应该只有当 selectedHero 存在时才显示所选英雄的详情。...点击一个英雄,它的详情就出现了。 这个应用看起来又再次工作正常显示了。 英雄显示在列表中,当你单击英雄的名字的时候,有关你单击英雄的详细信息就显示在页面的底部了。...用户可以选择一个英雄,并查看该英雄的详情。 你使用 *ngFor 显示了一个列表。 你使用 *ngIf 来根据条件包含或排除了一段 HTML。 你可以用 class 绑定来切换 CSS 的样式类。
在此页面中,您将扩展“Tour of Heroes”应用程序,以显示英雄列表,并允许用户选择英雄并显示英雄的详细信息。 完成此页面后,该应用应该看起来像这个实例(查看源代码)。...-- each hero goes here --> 下一步你将添加英雄名字 使用ngFor指令罗列英雄 目标是将组件中的英雄列表绑定到模板,迭代它们,并单独显示它们。...Angular无法显示null selectedHero的属性并抛出以下错误,在浏览器的控制台中可见: EXCEPTION: TypeError: Cannot read property 'name...在结构指令页面和模板语法页面的内置指令部分阅读有关ngIf和ngFor的更多信息。 格式化选中hero 当选择的英雄细节显示在列表下方时,很难在列表中识别选定的英雄。...您将Hero类移到lib / src下的自己的文件中。 你增加了选择英雄和显示英雄的细节的能力。 您了解了如何在组件模板中使用核心指令ngIf和ngFor。
NgFor:为列表中的每个项目重复一个模板。 NgSwitch:只显示多个可能元素中的一个。 NgIf 您可以通过向该元素应用NgIf指令(称为宿主元素)来添加或移除DOM中的元素。...您可以定义一个HTML块来定义应该如何显示单个项目。 您告诉Angular将该块用作呈现列表中每个项目的模板。...Angular把这条指令翻译成一个围绕宿主元素的,然后重复使用这个模板为列表中的每个英雄创建一组新的元素和绑定。 在“结构指令”指南中了解微语法。...*ngFor和trackBy NgFor指令可能表现不佳,特别是在大型列表中。 对一个项目,删除项目或添加项目的小改动可以触发DOM操作的级联。...例如,您可以将数字显示为货币,强制文本为大写,或筛选列表并对其进行排序。 对于这些小型转换来说,Angular 管道是一个很好的选择。 管道是简单的函数,它接受一个输入值并返回一个转换后的值。
本章节我们将为大家介绍如何将数据显示到用户界面上,可以使用以下三种方式: 通过插值表达式显示组件的属性 通过 NgFor 显示数组型属性 通过 NgIf 实现按条件显示 ---- 通过插值表达式显示组件的属性...要显示组件的属性,插值是最简单的方式,格式为:{{属性名}}。...以下代码基于 Angular 2 TypeScript 环境配置 来创建,你可以在该章节上下载源码,并修改以下提到的几个文件。...{ title = '站点列表'; mySite = '菜鸟教程'; } Angular 会自动从组件中提取 title 和 mySite 属性的值,并显示在浏览器中,显示信息如下: 使用 ngFor...网站列表: ngFor="let site of sites"> {{ site }}
angular的基本语法,这样有利于后面我们进行梳理别的知识点做一些铺垫 基本语法 常见指令 NgModel NgModel就和vue中的v-model的效果是一致的,只是写法会有一些区别,vue中是可以直接进行使用的...,但是在angular中我们引入框架的一个核心模块FormsModule才可以,该指令就是将数据驱动视图的改变!...在app.modules.ts中引入forms模块 // 核心模块 import { NgModule } from '@angular/core'; //引入forms模块实现数据的双向绑定 import...-- 使用{{}}进行数据的获取 --> {{inputData}} 运行效果 NgFor NgFor和我们js中的for循环渲染数据是一致的,所以这里是比较容易理解的,简单的演示一下...官方的话:为没有 DOM 元素的指令安排宿主 管道 管道其实就是具有一定功能的函数,主要是一些场景是对字符串什么的进行简单的转化,当然我们也可以自己使用自定义的函数进行数据的转换,只是angular给我们提供了一些初始化的功能函数管道详细列表
事实上,您可能会喜欢将它们应用到HTML模板中,就像样式一样。 介绍Angular管道,这是一种编写显示值转换的方法,您可以在HTML中声明这些转换。 尝试一下实例(查看源代码)。...在Date Pipe API Reference页面阅读有关DatePipe格式选项的更多信息。 链接管道 您可以将管道连接成可能有用的组合。...当您使用管道时,Angular会选择更简单,更快速的变更检测算法。 不使用管道 在下一个示例中,组件使用默认的积极变化检测策略来监控并更新其hero列表中每个英雄的显示。...您可以在实例(查看源代码)中确认,当您添加英雄时,即使您变更heroes列表,飞行英雄也会显示更新。 不纯的AsyncPipe Angular AsyncPipe是一个不纯管道的有趣例子。...下一步 管道是封装和共享常见显示值转换的好方法。 像样式一样使用它们,将它们放入模板表达式中,以丰富视图的吸引力和可用性。 在API参考中探索Angular的内置管道库。
显示数据 在 Angular 中最典型的数据显示方式,就是把 HTML 模板中的控件绑定到 Angular 组件的属性。...="let hero of heroes"> {{ hero.name }} ` 在模板里可以自己使用.语法,访问对象属性 使用 ngFor 显示数组属性...它是语法中不可或缺的一部分 通过 NgIf 进行条件显示 有时,应用需要只在特定情况下显示视图或视图的一部分,这个时候使用ngif,同vue.js里的v-if 在多数情况下,插值表达式是更方便的备选项。 实际上,在渲染视图之前,Angular 把这些插值表达式翻译成相应的属性绑定。...下面介绍其中的两个:管道和安全导航操作符 管道操作符 ( | ) 在绑定之前,表达式的结果可能需要一些转换。例如,可能希望把数字显示成金额、强制文本变成大写,或者过滤列表以及进行排序。
使用跟踪控件状态的特殊CSS类提供视觉反馈。 向用户显示验证错误并启用/禁用表单控件。 使用模板引用变量在HTML元素之间共享信息。 您可以在Plunker中运行实例(查看源代码)并从那里下载代码。...模板驱动的形式 您可以通过使用本页中描述的特定于表单的指令和技术在Angular模板语法中编写模板来构建表单。 您也可以使用响应式(或模型驱动)方法来构建表单。...你还没有使用Angular。 没有绑定或额外的指令,只是布局。 在模板驱动的表单中,如果已经导入了angular_forms库,则不必为了使用库功能而对标记执行任何操作。...你会看到一个样式化的表单! 使用* ngFor添加powers 英雄必须从一个固定的机构批准的权力列表中选择一个超级大国。 您在内部维护该列表(在HeroFormComponent中)。...您将在表单中添加一个select,并使用ngFor(先前在“显示数据”页面中看到的一种技术)将选项绑定到powers列表。
我们观察initSwiper方法,第一个参数'.wheel .swiper-container'其实是个选择器,所以它也是依托dom操作的,此外,由于我们使用了数据绑定,this.vm.dessertSlides...也就是说,前者只会初始化一次,而后两者每次显示都需要重新初始化,进一步说,若使用后两者方式,对于这里用到的swiper,它不是一个angular封装起来的组件,不会自动初始化,我们每次显示它时都需要显式调用一下...这并不是说都不要用*ngIf,因为当页面元素太多时会容易导致界面卡顿,所以没用的多余元素应该移除,此时就用它。一句话说就是根据情况合理选择显示控制方法。...是的,在大多场景中可以直接用ion-slides,只是会有个别坑要解决,比如我们改动下ts和html文件。...ts中把initSwiper方法相关内容移除: import { Component, ViewChild, ElementRef, ChangeDetectorRef } from '@angular
第三节 - 事件和模板引用 在 Angular 中,我们可以使用 (eventName) 语法,进行事件绑定。此外,可以使用 #variableName 的语法,定义模板引用。...,参数名一定要使用 $event ,否则无法获取正确的鼠标事件。...ngFor 指令 在 Angular 中我们可以使用 ngFor 指令来显示数组中每一项的信息。...第十节 - 组件样式 在 Angular 中,我们可以在设置组件元数据时通过 styles 或 styleUrls 属性,来设置组件的内联样式和外联样式。...:host 表示选择宿主元素,即 AppComponent 组件模板中的 app-simple-form 元素。
ngModel 要想在双向数据绑定中使用 ngModel 指令,必须先导入 FormsModule 并将其添加到 NgModule 的 imports 列表中。...ngFor循环的使用: 属性index、count、first、last、even、odd index属性提供当前对象的索引 count提供当前数据集的长度,类似于datasource.length...ng-if判断使用: //在angular中没有else只能都通过ng-if来判断 准备中 进行中...元素使用的 CSS 类 ng-class-even 类似 ng-class,但只在偶数行起作用 ng-class-odd 类似 ng-class,但只在奇数行起作用 ng-click 定义元素被点击时的行为...定义集合中每项数据的模板 ng-selected 指定元素的 selected 属性 ng-show 显示或隐藏 HTML 元素 ng-src 指定 元素的 src 属性 ng-srcset
(图片来源于网络) 第一节 - 创建指令 在 Angular 中,我们可以使用 HostBinding 装饰器,实现元素的属性绑定。...>Hello, Angular `, }) export class AppComponent { } 第三节 - 事件处理 在 Angular 中,我们可以使用 HostListener...>Hello, Angular `, }) export class AppComponent { } 第四节 - 获取宿主元素属性值 在 Angular 中,我们可以通过 Attribute...在 Angular 中,我们可以通过 ViewChild 装饰器来获取视图中定义的模板元素,然后利用 ViewContainerRef 对象的 createEmbeddedView() 方法,创建内嵌视图...let item 和 index as i 会被转换为 let-item 和 let-i="index" ngFor 指令在列表上循环,每个循环中都会设置和重置它自己上下文对象上的属性。
RouterLink指令告诉路由在用户点击链接时的位置。 您使用链接参数列表定义了一个路由指令, 这个列表在我们的小样本中只有一个元素,引用的路由名称。... * ngFor再次用于遍历英雄列表并显示他们的名字。...现在添加第三个选项,一个goBack()方法,使用您之前注入的Location服务在浏览器的历史堆栈中向后导航一步。...应该显示英雄11的详细信息。 在仪表板或英雄列表中选择英雄不起作用。 你会接下来的处理。...在HeroesComponent中选择一个英雄 在HeroesComponent中,当前的模板展示了一个“主/细节”风格,顶部是英雄列表,下方是选定的英雄的详细信息。
每种形式都有一个方向——从 DOM 来、到 DOM 去、双向,就像图中的箭头所示意的。 插值 : 在 HTML 标签中显示组件值。...在Angular中包含以下三种类型的指令: 属性指令:以元素的属性形式来使用的指令。 结构指令:用来改变DOM树的结构 组件:作为指令的一个重要子类,组件本质上可以看作是一个带有模板的指令。...为 sites 列表中的每个项生成一个 标签。...*ngIf 表示只有在选择的项存在时,才会包含 SiteDetail 组件。...---- 服务(Services) Angular2中的服务是封装了某一特定功能,并且可以通过注入的方式供他人使用的独立模块。 服务分为很多种,包括:值、函数,以及应用所需的特性。
如果你尝试在 Angular 中编写可重复使用的组件,则可能会接触到内容投射的概念。然后你发现了 ,并找到了一些关于它的文章,进而实现了所需的功能。...接下来我们来通过一个简单的示例,一步步介绍 所涉及的内容。 简单示例 在本文中我们使用一个示例,来演示不同的方式实现内容投影。...由于许多问题与Angular 中的组件生命周期相关,因此我们的主要组件将显示一个计数器,用于展示它已被实例化的次数: import { Component } from '@angular/core';...Counter 组件,组件类中的 id 属性用于显示本组件被实例化的次数。...在我们尝试解释为什么之前,让我们再来验证一个问题,即在 ng-content 指令的外层容器中添加 ngIf 指令: import { Component } from '@angular/core';
您可以通过使用Angular的标记组合HTML 模板,编写组件类来管理这些模板,在服务中添加应用程序逻辑以及在模块中装入组件和服务来编写Angular应用程序。 然后,通过引导根模块启动应用程序。...类似于* ngFor,{{hero.name}},(click),[hero]和的代码使用Angular的模板语法。...HeroDetailComponent(代码未显示)显示关于特定英雄的详情,这是用户从HeroListComponent提供的列表中选择的英雄。...这是告诉Angular这个组件的构造函数需要HeroService的一种方法,这样它就可以获得显示的英雄列表。 ? @Component中的元数据告诉Angular从哪里获取为组件指定的主要构建块。...= null"> * ngFor告诉Angular在英雄列表中标出每个英雄的一个。 * ngIf仅在选择的英雄存在时才包含HeroDetail组件。
本文将深入浅出地介绍 Angular 中的组件、模板和服务,探讨常见问题、易错点及如何避免,并通过代码示例加深理解。组件组件是 Angular 的核心构建块,每个应用都是由多个组件组成的。...'; }}模板Angular 的模板语言允许你在 HTML 中嵌入 TypeScript 表达式,使用插值表达式、属性绑定、事件绑定等语法糖。...插值表达式:{{ expression }},用于显示组件类中的数据。属性绑定:[property]="expression",用于绑定组件类中的属性到元素的属性。...应该通过服务、事件发射器或共享状态管理来实现组件间的通信。性能问题undefined过度使用ngFor和ngIf可能导致不必要的渲染。优化这些指令的使用,例如,使用TrackBy函数减少重复渲染。...如何避免这些问题使用事件发射器undefined在父子组件之间使用事件发射器进行通信,避免直接访问。性能优化undefined对于大型列表,使用虚拟滚动技术来提高性能。
领取专属 10元无门槛券
手把手带您无忧上云