Input and Output properties

  输入属性是一个带有@Input 装饰器的可设置属性,当它通过属性绑定的形式被绑定时,值会"流入"到这个属性。

  输出属性是一个带有@Output 装饰器的可观察对象型的属性。此属性几乎总是返回Angular 的Angular 的EventEmitter.当它通过事件绑定的形式被绑定时,值会“流出”这个属性。

  你只能通过它的输入和输出属性将其绑定到其它组件。

绑定到 组件自己

  本组件的属性绑定到它自己模板上,属性位于 等号(=)的右边。

绑定到 其他组件

       本组件绑定其他组件的属性,其它组件的属性位于等号(=)的左侧。而且 除非这些属性是输入或输出属性

<app-hero-detail [hero]="currentHero" (deleteRequest)="deleteHero($event)">
</app-hero-detail>

为什么 外部组件应该只能绑定到组件的公共(允许绑定) API 上?

  其它组件不应该进行这种毫无限制的访问。 如果任何人都可以绑定到你的组件的任何属性上,那么这个组件就很难维护。

Angular 要求你显式声明那些 API。 它让你可以自己决定哪些属性是可以被外部组件绑定的。

所有数据绑定属性必须是 TypeScript 的公共属性,Angular 永远不会绑定到 TypeScript 中的私有属性。

因此,Angular 需要一些其它方式来标记出那些允许被外部组件绑定到的属性。 这种其它方式,就是 @Input() 和 @Output() 装饰器。

声明输入与输出属性

@Input()  hero: Hero;
@Output() deleteRequest = new EventEmitter<Hero>();

另外,还可以在指令元数据的 inputs 或 outputs 数组中标记出这些成员:

@Component({
inputs: ['hero'],
outputs: ['deleteRequest'],
})

输入还是输出?

  输入属性通常接收数据值。 输出属性暴露事件生产者,如 EventEmitter 对象。

给输入/输出属性起别名

例如,在 <div> 上用 myClick 选择器应用指令时, 希望绑定的事件属性也叫 myClick

<div (myClick)="clickMessage=$event" clickable>click with myClick</div>

把别名传进@Input/@Output 装饰器,就可以为属性指定别名,即把 myClick 这个别名指向了指令自己的 clicks 属性:click.directive.ts

@Output('myClick') clicks = new EventEmitter<string>(); //  @Output(alias) propertyName = ...

也可在 inputs 和 outputs 数组中为属性指定别名。 可以写一个冒号 (:) 分隔的字符串,左侧是指令中的属性名,右侧则是公共别名:click.directive.ts

@Directive({
outputs: ['clicks:myClick'] // propertyName:alias
})

Angular2 组件与模板 -- 输入和输出属性的更多相关文章

  1. Angular快速学习笔记(3) -- 组件与模板

    1. 显示数据 在 Angular 中最典型的数据显示方式,就是把 HTML 模板中的控件绑定到 Angular 组件的属性. 使用插值表达式显示组件属性 要显示组件的属性,最简单的方式就是通过插值表 ...

  2. angular 输入属性@Input , 输出属性@Output , 中间人模式

    1 输入属性 通常用于父组件向子组件传递信息 举个栗子:我们在父组件向子组件传递股票代码,这里的子组件我们叫它app-order 首先在app.order.component.ts中声明需要由父组件传 ...

  3. Angular 组件与模板 - 属性指令

    指令概览 在 Angular 中有三种类型的指令: 组件 — 拥有模板的指令 结构型指令 — 通过添加和移除 DOM 元素改变 DOM 布局的指令 属性型指令 — 改变元素.组件或其它指令的外观和行为 ...

  4. Angular2 组件通信

    1. 组件通信 我们知道Angular2应用程序实际上是有很多父子组价组成的组件树,因此,了解组件之间如何通信,特别是父子组件之间,对编写Angular2应用程序具有十分重要的意义,通常来讲,组件之间 ...

  5. Angular2 组件

    1. 组件说明 Angular2 组件是构成Angular2应用程序的核心部分,Angualr2应用程序本质上来说就是一个组件树,Angular2组件一般由模块,注解,元数据以及组件类组成,实现组件类 ...

  6. Angular2组件与指令的小实践——实现一个图片轮播组件

    如果说模块系统是Angular2的灵魂,那其组件体系就是其躯体,在模块的支持下渲染出所有用户直接看得见的东西,一个项目最表层的东西就是组件呈现的视图.而除了直接看的见的躯体之外,一个完整的" ...

  7. angular2 组件交互

    1. 组件通信 我们知道Angular2应用程序实际上是有很多父子组价组成的组件树,因此,了解组件之间如何通信,特别是父子组件之间,对编写Angular2应用程序具有十分重要的意义,通常来讲,组件之间 ...

  8. Angular2组件与指令的小实践

    如果说模块系统是Angular2的灵魂,那其组件体系就是其躯体,在模块的支持下渲染出所有用户直接看得见的东西,一个项目最表层的东西就是组件呈现的视图.而除了直接看的见的躯体之外,一个完整的" ...

  9. angular2组件通讯的几种方式

    最近刚刚接触angular2,对ng2也是一知半解,如有说得不对的地方欢迎指出,欢迎加q共同探讨学习991085978: 1.通过输入型绑定把数据从父组件传到子组件 HeroChildComponen ...

随机推荐

  1. jquery插件制作教程 txtHover(转载)

    http://www.jb51.net/article/31082.htm 该系列文章是我阅读<jQuery Plugin Development Beginner's Guide>后的总 ...

  2. Linux命令-压缩解压命令:bzip2、bunzip2

    bzip2是gzip的升级版 bzip2 [选项] 源文件名(压缩前) -k 保留源文件,(区别gzip不支持保留源文件) bunzip2 [选项] 源文件名(压缩后) 压缩文件: bzip2 -k ...

  3. javascript sort方法容易犯错的地方

    sort方法用来对数组排序非常方便.但是sort(func)这个func参数的构造却很容易混淆. sort判断func的返回值是判断正负,而不是ture和false.所以务必保证返回值要么负数要么正数 ...

  4. 使用阿里云Docker镜像加速

    使用docker官方的docker hub速度太慢,正好看到国内阿里云也做了docker镜像,于是想试试看阿里云的docker源.先附上 阿里云docker hub地址 .新用户需要注册成为开发者.打 ...

  5. c语言打印一个整数的二进制形式

    printf函数没有这个功能,如果想打印一个数的二进制形式,就得自己计算.下面是我看到的最简便的算法: #include <stdio.h> int main(int argc, char ...

  6. Linux下解压tar.xz

    tar xvJf  ***.tar.xz 注意零散文件,最好放到文件夹里

  7. tortoiseGit 如何github提交代码

    由于一直用的都是SVN提交代码,Git也是目前自己边学边用的,本来以为自己已经会用了,可是一段时间没用又忘了 ,所以赶紧整理整理记下来,以便日后使用! 转自:http://blog.csdn.net/ ...

  8. html5 indexDB的使用

    angular.module('indexdb', []) .factory('indexDbJs', [function() { const CurDBVersion = 10000; window ...

  9. LeetCode -- 推断链表中是否有环

    思路: 使用两个节点.slow和fast,分别行进1步和2步.假设有相交的情况,slow和fast必定相遇:假设没有相交的情况,那么slow或fast必定有一个为null 相遇时有两种可能:1. 仅仅 ...

  10. Groovy学习专栏

    今天新开了一个groovy的学习专栏,因为最近工作中会用到Groovy模板. 然后就是在网上找了一下Groovy模板相关的东西发现ibm中在2005年就有讲到这个的,我勒个去,这么早,我初中都还没毕业 ...