重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
这篇文章将为大家详细讲解有关Angular中组件交互的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
在红河等地区,都构建了全面的区域性战略布局,加强发展的系统性、市场前瞻性、产品创新能力,以专注、极致的服务理念,为客户提供网站设计、做网站 网站设计制作按需定制设计,公司网站建设,企业网站建设,成都品牌网站建设,营销型网站,外贸网站建设,红河网站建设费用合理。
组件交互:组件通讯,让两个或多个组件之间共享信息。
使用场景:当某个功能在多个组件中被使用到时,可以将该特定的功能封装在一个子组件中,在子组件中处理特定的任务或工作流。
交互方式:
方式1:通过@Input
和@Output
装饰器进行交互。
方式2:通过服务
进行交互。
通过输入型绑定将数据从父组件传到子组件。
输入属性是一个带有@Input装饰器的可设置属性。
当它通过属性绑定的形式被绑定时,值会“流入”这个属性。
部分代码示例如下:
import { Component, Input } from '@angular/core'; @Component({ selector: 'app-selector', template: ` // 模板代码 ` }) export class TestComponent { @Input() hero: Hero; @Input('master') masterName: string; }
上述例子中包含两个输入型属性,第二个@Input为子组件的属性名masterName指定一个别名master。
在父组件中引用子组件,部分代码示例如下:
使用一个输入属性的setter()方法,已拦截父组件中值的变化,并采取行动。
部分代码示例如下:
export class TestComponent { @Input() set name(name: String) { // 逻辑处理 } }
使用OnChanges生命周期钩子接口的ngOnChanges()方法来监听输入属性值的变化并做出回应。
注:当需要监视多个、交互式输入属性时,本方法比用属性的setter方法更合适。
在子组件中从@angular/core导入Input、OnChanges和SimpleChange
import { Component, Input, OnChanges, SimpleChange } from '@angular/core'; @Component({ selector: 'app-version-child', template: ` // 模板代码 ` }) export class ChildComponent implements OnChanges { @Input() major: number; @Input() minor: number; ngOnChanges(changes: { [propKey: string]: SimpleChange }) { for (let propName in changes) { // propName为输入属性的名字 let changedProp = changes[propName]; // changedProp为SimpleChange对象 // 其它代码 } } }
SimpleChange类源代码如下:
/** * Represents a basic change from a previous to a new value for a single * property on a directive instance. Passed as a value in a * {@link SimpleChanges} object to the `ngOnChanges` hook. * * @see `OnChanges` * * @publicApi */ export declare class SimpleChange { previousValue: any; currentValue: any; firstChange: boolean; constructor(previousValue: any, currentValue: any, firstChange: boolean); /** * Check whether the new value is the first value assigned. */ isFirstChange(): boolean; }
子组件暴露一个 EventEmitter 属性,当事件发生时,子组件利用该属性 emits(向上弹射)事件。父组件绑定到这个事件属性,并在事件发生时作出回应。
子组件的 EventEmitter 属性是一个输出属性,通常带有@Output装饰器。
—— Angular 组件之间的交互
父组件和它的子组件共享同一个服务,利用该服务在组件家族内部实现双向通讯。
该服务实例的作用域被限制在父组件和其子组件内。这个组件子树之外的组件将无法访问该服务或者与它们通讯。
关于“Angular中组件交互的示例分析”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。