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
})

转载于:https://www.cnblogs.com/AndyChen2015/p/9632865.html

Angular2 组件与模板 -- 输入和输出属性相关推荐

  1. Angular2组件开发—模板的逻辑控制(一)

    使用条件逻辑 有时我们需要模板的一部分内容在满足一定条件时才显示,比如右边示例中的EzReader组件, 对于试用用户,它将在正文之上额外显示一个广告: 这是指令NgIf发挥作用的场景,它评估属性ng ...

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

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

  3. Angular2 组件通信

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

  4. angular2 组件交互

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

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

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

  6. angular2 组件

    angular2 组件 首先了解angular2 组件的含义 angular2的应用就是一系列组件的集合 我们需要创建可复用的组件供多个组件重复使用 组件是嵌套的,实际应用中组件是相互嵌套使用的 组件 ...

  7. xml文件 卷积神经网络_理解卷积神经网络中的输入与输出形状(Keras实现)

    即使我们从理论上理解了卷积神经网络,在实际进行将数据拟合到网络时,很多人仍然对其网络的输入和输出形状(shape)感到困惑.本文章将帮助你理解卷积神经网络的输入和输出形状. 让我们看看一个例子.CNN ...

  8. (13.1.2)PMBOK之二:五大过程组及其涉及的输入、输出、工具技术

    一.五大过程组概述 1.1 过程的定义 1.2 五大过程组的由来 1.3 五大过程组49 1.3.1 启动 2 13% 1.3.2 规划 24 24% 1.3.3 执行 10 30% 1.3.4 监控 ...

  9. web安全性测试用例(输入、输出、SQL注入、跨站请求伪造(CSRF)、跨站脚本攻击(XSS))实实在在的干货

    https://www.cnblogs.com/qmfsun/p/3724406.html 建立整体的威胁模型,测试溢出漏洞.信息泄漏.错误处理.SQL 注入.身份验证和授权错误. 1.   输入验证 ...

最新文章

  1. SqlServer 中Binary类型的数据如何转化为字符串
  2. 微信红包随机数字_微信红包的随机算法
  3. linux 状态码的意义,HTTP状态码是什么?常见的状态码描述都有什么?
  4. [ARM]【编译】【实践】 - 浮点编译选项NEON引发的Skia的库Illegal instruction运行错误和解决办法
  5. mui + php,GitHub - alphaphp/mui-kidApp: 基于 MUI 构建一个具有 90 +页面的APP应用
  6. 为什么要用dubbo,dubbo是什么,为什么要和zk结合使用?
  7. html动态图片怎么设背景,[gif制作教程]如何把gif动态图片的背景变透明,仍保留有动画效果...
  8. 新型城镇化红利,碧桂园的确定性在哪里?
  9. hdu 3625 Examining the Rooms
  10. 天天向上的力量(c语言)
  11. hibernate报错could not insert
  12. cos41度用计算机怎么算,用电监察计算(精品)
  13. LINUX NGINX 环境禁止访问指定后缀文件
  14. 使用计算机翻译功能吗,微信上怎么使用翻译功能 翻译功能设置教程
  15. 交换机和路由器技术-15-链路聚合
  16. java 与或非_JAVA 或与非运算符 与()、或(|)、异或(^)
  17. lcy mysql爆破_mysql
  18. 如何删除重复的DS_SERVICE_PRINCIPAL_NAME账户|spn
  19. 六代单传的老代码,到底能不能动
  20. splunk与日志分析

热门文章

  1. 扩展 GRTN:云原生趋势下的 RTC 架构演进
  2. 三只松鼠:阿里云数据中台基座上的多渠道、多业态生长
  3. java安全编码指南之:异常处理
  4. 给 COLA 做减法:应用架构中的“弯弯绕设计”
  5. C语言输出长方柱的体积,需要求3个长方柱的体积,请编写一个基于对象的程序。数据成员包括length(长)、width(宽)、 height(高)。要求用成员函数实现以下功能...
  6. 总结:一款Loading动画的实现思路
  7. 如何用Unity和Cardboard做一款VR游戏
  8. 关于低分辨率像素游戏下显示非防锯齿中文 / 汉字的研究
  9. 网络安全第一讲 计算机网络安全概述
  10. Segment Tree