angular——组件交互

 

  angular是以组件化的形式来实现,因而组件交互是极为基础且重要的,下面对其组件之间的交互方式一一介绍。

  1. 通过输入型绑定把数据从父组件传到子组件。

  child.component.ts:

   <p>{{message}}</p>

  parent.component.ts:  

  <app-child [message]="callChild"></app-child> 

2. 通过serter接听输入属性值的变化  

  

  parent.component.ts:    <app-child [name]="name"></app-child>

  3.父组件监听子组件的事件

  child.component.ts:

  

  parent.component:

  <app-child [onVoted]="onVoted($event)"></app-child>

  onVoted(agreed: boolean) { console.log(agreed); }

 

  4. 父组件与子组件通过本地变量互动

  child:    stop(){};    start(){};    parent:    <app-child #child></app-child>    <button (chilk)="child.start()"></button>   注:用本地变量可使用在父组件模板里面来读取子组件的属性或者使用其方法;

  5. 父组件调用@ViewChild()

    4>局限性:只能在组件模板里面使用子组件的小户型或方法,但是父组件的类并不能使用;

    当父组件类需要这种访问时,可以把子组件作为 ViewChild,注入到父组件里面。

  parent:

  @ViewChild(CountdownTimerComponent)

  private childComponent: ChildComponent;

  start(){

    this.childComponent.start();

  }

  6. 父组件和子组件通过服务来通讯

  service:

    private a = new Subject<string>();

    private b = new Subject<string>();

    ac = this.a.asObservable();

    bc = this.b.asObservable();

    calla(messageA: string){

      this.a.next(messageA);

    } 

    callb(messageB: string){

      this.b.next(messageB);

    } 

 

  parent:

    @Component({

      selector: app-parent,

      providers: [Service]

    })

    nbr = 1;

    subscription: Subscription;

    constructor(private service: Service){

      this.subscription = service.ac.subscribe(message => {

        console.log(message);

      })

    }

    add() {

      this.service.callb(nbr);

    }

  

  child:

    constructor(private service: Service){

      this.subscription = service.bc.subscribe(message => {

        console.log(message);

      })

    }

    add(){

      this.service.calla("child call A");

    }

    

   这样子父组件都可通过自己类中的方法使用服务来影响到另一个组件

原文地址:https://www.cnblogs.com/skylen/p/10119115.html

时间: 2024-08-30 08:10:31

angular——组件交互的相关文章

Angular组件之间通讯

组件之间会有下列3种关系: 1. 父子关系 2. 兄弟关系 3. 没有直接关系 通常采用下列方式处理(某些方式是框架特有)组件间的通讯,如下: 1父子组件之间的交互(@Input/@Output/模板变量/@ViewChild) 2非父子组件(Service/localStorage) 3还可以利用Session等服务器端的解决方法 Angular组件间通讯方法: 1.父子组件之间的通讯 @Input:是属性绑定,父组件向子组件传递数据 @Output:是事件绑定,子组件向父组件传递数据的同时触

轻量jquery框架之--组件交互基础设计

概要 组件交互基础,即考虑在JQUERY对象下($)下扩展所有组件都需要用到的通用api,如ajax入口.对表单的操作.html片段加载.通用的配合datagrid通用的curd客户端对象等. 扩展api如下 一.ajax设计 (1)统一ajax请求的流程预计数据返回格式.ajax请求的数据返回格式如下: { code:0/1, //0 表示正确运行,并返回了信息.数据:1表示非正确返回结果(可能是程序异常或者运算结果异常),异常信息放到message属性中 message:"服务端提示的信息&

angular 组件生命周期

摘要 angular 组件生命周期和react 有很大不同 初始化 constructor ngOnChanges 当输入/输出绑定的值改变时调用 ngOnInit 在第一次 ngOnChanges 后调用 ngDoCheck 自定义的方法,检测和处理值的改变 ngAfterContentInit 在组件内容初始化之后调用 ngAfterContentChecked 组件每次检查内容时调用 ngAfterViewInit 组件相应的视图初始化之后调用 ngAfterViewChecked 组件每

编辑我们的第一个Angular组件

让我们开始修改代码吧! src/app/* 后缀为html和css想必各位很熟悉吧,没错,就是它. 下面来了解一下目录结构以及使用! src文件夹 你的应用代码位于src文件夹中. 所有的Angular组件.模板.样式.图片以及你的应用所需的任何东西都在那里. 这个文件夹之外的文件都是为构建应用提供支持用的. 根目录 src/文件夹是项目的根文件夹之一. 其它文件是用来帮助你构建.测试.维护.文档化和发布应用的.它们放在根目录下,和src/平级. 详情请访问:angular-cn. 原文地址:h

v-once指令、v-cloak指令、条件指令家族、原义指令、循环指令、todolist案例、实例成员-符号、实例成员-计算属性、实例成员-属性监听、监听的案例、局部组件、全局组件、组件交互(父传子、子传父)

v-once指令: v-once:单独使用,限制的标签内容一旦赋值,便不可被动更改(如果是输入框,可以主动修改) <div id="app"> <input type="text" v-model="msg"> <!-- 一旦赋值,只可主动更改 --> <input type="text" v-model="msg" v-once> <p>{{ m

Apache OFBIZ快速上手--组件交互

Ofbiz是一个基于WEB的应用程序开发框架,为应用者提供了大量的基础构建,帮助开发者快速的开发出高效,良构的应用系统.对于开发者来说,只需要专注于业务逻辑层的开发以及UI的开发上,其他的都被封装成组件存在了,从而不需要开发花费精力在这些东西上面.从这个角度来说性价比会比较高吧. 做过小例子的都知道,OFBiz是web应用程序开发框架,都是由WEB服务器接受请求,处理请求,以WEB页面的形式将处理结果展示给用户:用户通过浏览器,通过HTTP协议进行应用的访问.由于OFBIZ是一个应用程序框架,基

angular组件component无法传递数据的坑

问题:使用组件component时组件无法从外获取到绑定的数据 先贴上官方component的介绍及demo地址:https://docs.angularjs.org/guide/component; 将confirm-dialog.html插入到main.html页面,并将vm.agreemnt传入到confirm.dialog.html中 main.html 在此页面中使用cost-info来传输数据,将main.controller中的vm.agreement传递给cost-info ,o

前端判断是否APP客户端打开触屏,实现跳转APP原生组件交互之遐想

今天做了一个html的活动页面,本来马上就要完工,准备开开心心收尾,结果~... 产品突然提出需要说,要讲html中的某些交互和APP原生组件挂钩,心里一万头xxx奔过~ 静下心来思考 以往我们是判断是否客户端打开都依赖于后端,通过app主动拼接参数的方式,传递给后端,后端告诉前端本次的加载是在app里还是app外,实现页面的特殊功能 那我们发现,这个方式环节和局限性太多,我们无法保证客户端一定能够每个触屏页面都拼接我们需要的参数,而且我们的触屏页面有很多种,有的是活动需要的,有的是动态,有的是

angular组件间的信息传递

原文 https://www.jianshu.com/p/82207f2249c1 大纲 1.父组件向子组件传递信息:通过属性 2.子组件向父组件传递信息:通过事件 3.父组件获取子组件的信息:通过调用模板引用变量 4.父组件和子组件共享信息:通过服务共享信息 5.父组件获取子组件的信息:通过@ViewChild 或@ContentChild 6.参考代码 父组件向子组件传递信息:通过属性 //父组件向子组件通过属性传递信息 <app-childen [data]="parent_data