Angular2 组件
1. 组件说明
Angular2 组件是构成Angular2应用程序的核心部分,Angualr2应用程序本质上来说就是一个组件树,Angular2组件一般由模块,注解,元数据以及组件类组成,实现组件类逻辑和视图模板的相互交互。来看下面的这个简单的组件的例子:

2. 模块
模块是一个内聚的代码块,用来实现某种单一的功能,可以进行导入来使用模块内的变量,类或者函数等,如下所示,组件需要导入一些该组件使用到的函数,其他组件,服务等模块,例如,从 @angular/core中导入Component函数,导入其他依赖组件HeaderComponent等。
|
import { Component, OnInit, Inject, ViewChild} from '@angular/core'; import { HeaderComponent } from './header'; import { DetailsComponent } from './details'; import { ButtonComponent } from './button'; import { EPO_PR_HEAD_P2P } from '../../model'; import { PrStore } from '../../store'; import { PrService } from '../../service'; |
3. 注解
从@angular/core中导入Component函数后,可以使用@Component()来标示组件类为一个Component,@标示注解的一种标识,用来对组件类福建对应的元数据信息。
4. 元数据
@Component将元数据的信息附加到组件类上,我们来详细了解一下常用的组件元数据信息都有哪些:
|
@Component({ moduleId: "pr-input-mkt", selector: 'pr-input-mkt', //inline template template: ` <ui-header [header]="PrEntity.header"></ui-header> <ui-details [details]="PrEntity.details"></ui-details> <ui-button [header]="PrEntity.header" (onsubmit)="dosubmit($event)"></ui-button> `, //out template templateUrl: `./template.html`, directives: [HeaderComponent, DetailsComponent, ButtonComponent], pipes: [DatePipe], providers: [PrService] }) |
moduleId:组件标识ID,用来区分各个组件,主要作用于相对路径使用组件,可以准确定位到组件。
selector:选择器名称,在组件使用过程中,充当模板中的标识,类似a标签中的a。这个属性信息是必须的,必须精确的指定在模板中所使用的标签定义,可以为属性,标签或者样式类等,例子中使用是采用标签的形式使用的。
template/templateUrl:组件对应的模板,template是组件内部的用法,引入外部模板文件使用templateUrl。
directives:在组件模板中使用的其他组件或者指令,引入以后可以在模板中进行使用。
pipes:管道集合,组件模板中使用到的管道,引入后可以在模板中进行使用。
providers:服务提供者集合,依赖注入系统的部分,配置了那些新的服务会引入到组件类中进行使用。
5. 组件类
组件类作为组件的核心代码区域,包含了组件的逻辑以及视图的显示数据信息。组件类的用户主要是体现在输入和输出两个部分。
5.1 Input
输入使用@Input()注解来表示,将父组件的数据绑定到对应的子组件的属性中。例如 HeaderComponent 组件中,使用@Input() 来附加输入属性到header上。
|
import { Component, OnInit, Input, } from '@angular/core'; import { EPO_PR_HEAD_P2P} from '../../model'; import { PrService } from '../../service'; @Component({ selector: 'ui-header', template: ` <form class="form-horizontal" role="form" (change)="change($event)"> <div class="form-group"> <legend>Form title</legend> </div> <div class="input-group"> <div class="input-group-addon">ID</div> <input type="text" class="form-control" name="ID" [ngModel]="header.ID" placeholder="Amount"> </div> </form> ` }) export class HeaderComponent implements OnInit { _init: boolean = false; @Input() header: EPO_PR_HEAD_P2P; } |
那么如何在父组件中如何调用呢,其实非常简单,实际上就是模板语法中属性的绑定方式,将父组件中的数据传递到子组件中。
|
<ui-header [header]="PrEntity.header"></ui-header> |
5.2 Output
输入使用@ Output ()注解来表示,将子组件触发的事件提交到父组件中。例如 ButtonComponent组件中,使用@ Output () 来创建一个事件触发器onsave,当点击save按钮的时候触发onsave事件,并传递对应的数据’save’。
|
import { Component, OnInit, Output, EventEmitter } from '@angular/core'; @Component({ selector: 'ui-button', template: ` <div class="btn-group"> <button type="button" class="btn btn-default" (click)="save($event)">save</button> </div> ` }) export class ButtonComponent implements OnInit { @Output() onsave = new EventEmitter(); constructor() { } ngOnInit() { } save($event) { this.onsave.emit('save'); } } |
那么如何在父组件中如何调用呢,和组件输入相似,不过本次采用的是模板语法中事件的绑定方式,$event表示传递的参数信息,当点击子组件save按钮的时候的时候,父组件中的dosave方法便会执行。
|
<ui-button (onsave)="dosave($event)"></ui-button> |
Angular2 组件的更多相关文章
- Angular2 组件通信
1. 组件通信 我们知道Angular2应用程序实际上是有很多父子组价组成的组件树,因此,了解组件之间如何通信,特别是父子组件之间,对编写Angular2应用程序具有十分重要的意义,通常来讲,组件之间 ...
- Angular2组件与指令的小实践——实现一个图片轮播组件
如果说模块系统是Angular2的灵魂,那其组件体系就是其躯体,在模块的支持下渲染出所有用户直接看得见的东西,一个项目最表层的东西就是组件呈现的视图.而除了直接看的见的躯体之外,一个完整的" ...
- angular2 组件交互
1. 组件通信 我们知道Angular2应用程序实际上是有很多父子组价组成的组件树,因此,了解组件之间如何通信,特别是父子组件之间,对编写Angular2应用程序具有十分重要的意义,通常来讲,组件之间 ...
- Angular2组件与指令的小实践
如果说模块系统是Angular2的灵魂,那其组件体系就是其躯体,在模块的支持下渲染出所有用户直接看得见的东西,一个项目最表层的东西就是组件呈现的视图.而除了直接看的见的躯体之外,一个完整的" ...
- angular2+ 组件中用@import进来的css不起作用
一般来说是作用域的问题,首先你应该先看标签内是否有angular2内置生成的自定义属性比如: 在我们的@Component中,这三个是基本的设置. 页面上的标签会生成带有 _nghost-c1 和 ...
- angular2组件通讯的几种方式
最近刚刚接触angular2,对ng2也是一知半解,如有说得不对的地方欢迎指出,欢迎加q共同探讨学习991085978: 1.通过输入型绑定把数据从父组件传到子组件 HeroChildComponen ...
- angular2+ 组件间通信
angular2+ 不同于react的redux,vue的vuex,angular2+其实可实现数据状态管理的方法很多,以下方案一般也足够支撑普通业务: 父子组件通信 1.1 父组件向子组件传递信息( ...
- Angular2 组件生命周期
1. 说明 Angular每个组件都存在一个生命周期,从创建,变更到销毁.Angular提供组件生命周期钩子,把这些关键时刻暴露出来,赋予在这些关键结点和组件进行交互的能力. 2. 接口 按照生命周期 ...
- angular2 组件之间通讯-使用服务通讯模式 2016.10.27 基于正式版ng2
工作中用到ng2的组件通讯 奈何官方文档言简意赅 没说明白 自己搞明白后 整理后分享下 rxjs 不懂的看这篇文章 讲很详细 http://www.open-open.com/lib/view/ope ...
随机推荐
- java并发编程学习: 原子变量(CAS)
先上一段代码: package test; public class Program { public static int i = 0; private static class Next exte ...
- 聊聊 Web 项目二维码生成的最佳姿势
在设计和实现的过程之后,你永远不知道部署上去的程序会已什么样的姿势运行. 本篇借一次生成二维码逻辑的不同实现,阐述 Web 项目中二维码生成的正确姿势. 文中如有批量,欢迎各位看客老爷拍砖.试运行前5 ...
- C/C++实践笔记 008
逗号运算符优先级最低逗号运算符的值是最后一个的值int a=(1,2);执行结果为2逗号运算符每一条语句都要执行,执行方向从左向右 三目运算符表达式1?表达式2:表达式3 C语言里只有0和非0的区别 ...
- 51Nod-1265 四点共面
51Nod 1265 : http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1265 1265 四点共面 基准时间限制:1 秒 ...
- Java使用代理服务器
HTTP协议是基于TCP协议的,TCP协议在Java中的体现就是套接字.在了解HTTP协议的基础上,完全可以通过TCP来实现一套HTTP库,这个库可以发起网络请求和接受网络请求.只要能用URLConn ...
- 【转】Java面试题全集2.2(下)
154.如何在Web项目中配置Spring的IoC容器? 答:如果需要在Web项目中使用Spring的IoC容器,可以在Web项目配置文件web.xml中做出如下配置: <context-par ...
- PRINCE2
首先要说的是,我这篇体会是针对一定的背景的,不能算是一种通用的管理方式,只能是我自己的经验总结,能给大家平常的管理提供一点思路,我就很满足了.先说说背景,我所在公司做的是大型桌面应用软件,简单点说就是 ...
- 设置 github 帐号user.name和邮箱user.email
git config --global user.name username git config --global user.email username@email.com
- Ubuntu 14.04 无线网卡驱动安装
安装了Ubuntu最新版本 14.04 之后,发现无线网卡不能使用,偿试安装驱动后,问题解决. 首先确定无线网卡类型: lspci -vnn -d 14e4: 比如我的网卡类型为 06:00.0 Ne ...
- AOJ DSL_2_A Range Minimum Query (RMQ)
Range Minimum Query (RMQ) Write a program which manipulates a sequence A = {a0,a1,...,an−1} with the ...