您好,欢迎访问一九零五行业门户网

浅谈Angular组件的交互方式

本篇文章和大家一起聊聊angular组件的交互方式。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。
angular 组件交互
组件交互: 组件通讯,让两个或多个组件之间共享信息。
使用场景: 当某个功能在多个组件中被使用到时,可以将该特定的功能封装在一个子组件中,在子组件中处理特定的任务或工作流。
交互方式:
方式1:通过@input和@output装饰器进行交互。方式2:通过服务进行交互。相关教程推荐:《angular教程》
把数据从父组件传到子组件
通过输入型绑定将数据从父组件传到子组件。
输入属性是一个带有@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。
在父组件中引用子组件,部分代码示例如下:
<app-hero-child *ngfor="let hero of heroes" [hero] = "hero" [master] = "master"> </app-hero-child>
监听输入属性值的变化
(1) 使用setter方法
使用一个输入属性的setter()方法,已拦截父组件中值的变化,并采取行动。
部分代码示例如下:
export class testcomponent { @input() set name(name: string) { // 逻辑处理 }}
(2) 使用ngonchanges()方法
使用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组件的交互方式的详细内容。
其它类似信息

推荐信息