Angular2 组件与模板 -- 输入和输出属性
Input and Output properties输入属性是一个带有@Input 装饰器的可设置属性,当它通过属性绑定的形式被绑定时,值会"流入"到这个属性。 输出属性是一个带有@Output 装饰器的可观察对象型的属性。此属性几乎总是返回Angular 的Angular 的 你只能通过它的输入和输出属性将其绑定到其它组件。 绑定到 组件自己 本组件的属性绑定到它自己模板上,属性位于 等号(=)的右边。 绑定到 其他组件 ? ? ? ?本组件绑定其他组件的属性,其它组件的属性位于等号( <app-hero-detail [hero]="currentHero" (deleteRequest)="deleteHero($event)"> </app-hero-detail> 为什么 外部组件应该只能绑定到组件的公共(允许绑定) API 上? 其它组件不应该进行这种毫无限制的访问。 如果任何人都可以绑定到你的组件的任何属性上,那么这个组件就很难维护。 Angular 要求你显式声明那些 API。 它让你可以自己决定哪些属性是可以被外部组件绑定的。 所有数据绑定属性必须是 TypeScript 的公共属性,Angular 永远不会绑定到 TypeScript 中的私有属性。 因此,Angular 需要一些其它方式来标记出那些允许被外部组件绑定到的属性。 这种其它方式,就是? ? 声明输入与输出属性@Input() hero: Hero; @Output() deleteRequest = new EventEmitter<Hero>(); 另外,还可以在指令元数据的? @Component({
inputs: [‘hero‘],outputs: [‘deleteRequest‘],})
输入还是输出? 输入属性通常接收数据值。?输出属性暴露事件生产者,如? 给输入/输出属性起别名例如,在? <div (myClick)="clickMessage=$event" clickable>click with myClick</div> 把别名传进@Input/@Output 装饰器,就可以为属性指定别名,即把? @Output(‘myClick‘) clicks = new EventEmitter<string>(); // @Output(alias) propertyName = ... 也可在? @Directive({
outputs: [‘clicks:myClick‘] // propertyName:alias
})
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |