这篇文章主要介绍角组件的交互方式有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
<>强角组件交互强>
<强>组件交互:>强组件通讯,让两个或多个组件之间共享信息。
<强>使用场景:强>当某个功能在多个组件中被使用到时,可以将该特定的功能封装在一个子组件中,在子组件中处理特定的任务或工作流。
<强>交互方式强>:
- <李>
方式1:通过<代码> @Input 代码>和<代码> @Output 代码>装饰器进行交互。
李> <李>方式2:通过<代码>服务代码>进行交互。
李>相关教程推荐:《角教程》
<人力资源/><强>把数据从父组件传到子组件强>
通过输入型绑定将数据从父组件传到子组件。
输入属性是一个带有@Input装饰器的可设置属性。
当它通过属性绑定的形式被绑定时,值会“流”入这个属性。
部分代码示例如下:
import {组件的不同之处是,Input },得到& # 39;@angular/核心# 39;; @ component ({ ,,选择器:& # 39;app-selector& # 39; 模板:,才能 ,,,//,模板代码 的才能 }) export class  TestComponent { @Input才能(),英雄:,英雄; @Input才能(& # 39;主# 39;),masterName:,字符串; }
上述例子中包含两个输入型属性,第二个@Input为子组件的属性名masterName指定一个别名主人。
在父组件中引用子组件,部分代码示例如下:
,,,,& lt; app-hero-child * ngFor=發et hero of heroes" ,,,,,(英雄),=,“hero" ,,,,,(主),=,“master"比; ,,,& lt;/app-hero-child><人力资源/>
<强>监听输入属性值的变化强>
<强>(1)使用setter方法强>
使用一个输入属性的setter()方法,已拦截父组件中值的变化,并采取行动。
部分代码示例如下:
export class TestComponent { @Input () set 名称(名称:字符串),{//,逻辑处理 } }
<>强(2)使用ngOnChanges()方法强>
使用onchange生命周期钩子接口的ngOnChanges()方法来监听输入属性值的变化并做出回应。
<强>注:强>当需要监视多个,交互式输入属性时,本方法比用属性的setter方法更合适。
在子组件中从@angular/核心导入输入,onchange和SimpleChange
import {,组件,输入,,onchange,, SimpleChange },得到& # 39;@angular/核心# 39;; @ component ({ ,,选择器:& # 39;app-version-child& # 39; 模板:,才能//才能,模板代码 的才能 }) export class  ChildComponent implements OnChanges  { @Input才能(),主要:,数量; @Input才能(),小:,数量; ngOnChanges才能(变化:,{,[propKey: string]:, SimpleChange }), { ,,,for (let propName 改变拷贝),{ ,,,,,//,propName为输入属性的名字 ,,,,,let changedProp =,改变[propName];,//, changedProp为SimpleChange对象 ,,,,,//,其它代码 ,,,} ,,} }
<>强SimpleChange类>强源代码如下:
/* * ,* Represents a  basic change 得到a previous 用a new value for a 单身 ,* property 提醒a directive 实例只Passed as a value 拷贝 ,* {@link SimpleChanges}, object 用,ngOnChanges的钩。 ,* ,* @see “onchange” ,* ,* @publicApi ,*/export declare  class SimpleChange  { ,,,previousValue:,任何; ,,,currentValue:,任何; ,,,firstChange:,布尔; ,,,构造函数(previousValue:,,, currentValue:,,, firstChange:,布尔型); ,,,/* * ,,,,*,Check whether 从而new value is 从而first value 分配。 ,,,*/,,,isFirstChange():,布尔; }<人力资源/>
<强>父组件监听子组件的事件强>
子组件暴露一个EventEmitter属性,当事件发生时,子组件利用该属性排放(向上弹射)事件。父组件绑定到这个事件属性,并在事件发生时作出回应。
子组件的EventEmitter属性是一个输出属性,通常带有@Output装饰器。
——角组件之间的交互
<人力资源/><强>父组件和子组件通过服务进行通讯强>
父组件和它的子组件共享同一个服务,利用该服务在组件家族内部实现双向通讯。