美文网首页
angular 通过 EventEmitter 在组件中传参

angular 通过 EventEmitter 在组件中传参

作者: buenos_dan | 来源:发表于2020-05-17 09:29 被阅读0次

使用EventEmitter在组件中传参,这种方法比较灵活,不受父子组件的限制,可以在所有组件间自由使用。具体做法如下:

  1. 在服务中定义一个EventEmitter
import { EventEmitter, Injectable} from '@angular/core';

@Injectable({
  provideIn: 'root'
})
export class EventEmitService{
  myEventEmitter: EventEmitter<number> = nuw EventEmitter();
}
  1. 在一个组件中发送传参,发送传参的事件往往由点击button事件触发
//引入EventEmitService
import { EventEmitService } from '../../service/EventEmitSrvice';

//构造器中声明该服务
constructor(private eventEmitService: EventEmitService){ }

//在button的触发函数里调用
onclick(id:number){
  this.eventEmitService.myEventEmitter.emit(id);
}
  1. 在另一个组建里订阅该传参,接受传参的事件只需在初始化时订阅一下,此后就会一直监听,随时触发。
//引入EventEmitService
import { EventEmitService } from '../../service/EventEmitSrvice';

//构造器中声明该服务
constructor(private eventEmitService: EventEmitService){ }

//在ngOnInit()函数里订阅
ngOnInit(): void{
  this.eventEmitService.myEventEmitter.subscribe(id => {
    //每当发生一次传参事件时,都会再次执行下面代码
    showParam(id);         //showParam(id){ console.log(id); }
  }
}
EventEmitter传参示意图.png

总结,在服务中定义一个EventEmitter, 在一个组件中使用emit传参,另一个组件中使用subscribe()接受传参。

相关文章

  • angular 通过 EventEmitter 在组件中传参

    使用EventEmitter在组件中传参,这种方法比较灵活,不受父子组件的限制,可以在所有组件间自由使用。具体做法...

  • Angular父子组件通过服务传参

    今天在使用ngx-translate做多语言的时候遇到了一个问题,需要在登录页面点击按钮,然后调用父组件中的一个方...

  • angular组件传参

    【子传父】 【父传子】 【非父子组件】1、创建shared-service.ts 文件 2、创建a.ts 文件 3...

  • Angular组件传参

    暂无

  • vue 父传子

    1.父组件与子组件传参父组件通过标签上面定义传参

  • 使用ts搭建一个react class组件

    在父组件中给子组件传参在父组件中引入子组件,然后直接传入参数,子组件通过React.Component ,它里面的...

  • vue组件传参问题

    在vue项目中会经常遇到组件传参问题,今天就来了解一下父子组件和兄弟组件传参 父组件传值给子组件 *父组件通过 ...

  • angular父子组件之间的传值

    父子组件的传值,是mvvm框架中必然绕不过去的话题,下面列举在angular中父子组件传值的各种方式。 一、通过输...

  • 初识Angular2的组件通信

    Angular2中免不了进行父子组件的通信,现在就稍微的了解一下父组件怎么给子组件传值,首先,通过Angular-...

  • Tips of using RxJS

    Async EventEmitter Oh EventEmitter is Angular extension, ...

网友评论

      本文标题:angular 通过 EventEmitter 在组件中传参

      本文链接:https://www.haomeiwen.com/subject/vjjjohtx.html