typescript Angular2在兄弟组件之间进行通信

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了typescript Angular2在兄弟组件之间进行通信相关的知识,希望对你有一定的参考价值。

import {Component, Input, OnChanges} from 'angular2/core';
import {EmitterService} from './emitter.service';

@Component({ selector: 'dispatcher', template: '' })
class DispatcherComponent implements OnChanges {
  @Input() id: string;
  private value = "dispatcher component value";
  
  doStuff() {
    EmitterService.get(this.id).emit(value);
  }
}
@Component({ selector: 'listener', template: '' })
class ListenerComponent implements OnChanges {
  @Input() id: string;

  ngOnChanges() {
    EmitterService.get(this.id).subscribe(value => console.log(value));
  }
}

@Component({
  providers: [EmitterService],
  selector: 'host',
  template: `
    <dispatcher [id]="host_id"></dispatcher>
    <listener [id]="host_id"></listener>
  `
})
export class HostComponent {
  public host_id: "HOST_COMPONENT";
  
  constructor(private _emitterService: EmitterService) {}
}
import {Injectable, EventEmitter} from 'angular2/core';

@Injectable()
export class EmitterService {
  private static _emitters: { [ID: string]: EventEmitter<any> } = {};

  static get(ID: string): EventEmitter<any> {
    if (!this._emitters[ID]) 
      this._emitters[ID] = new EventEmitter();
    return this._emitters[ID];
  }
}

以上是关于typescript Angular2在兄弟组件之间进行通信的主要内容,如果未能解决你的问题,请参考以下文章

Angular2:通过路由器在兄弟组件之间传递数据?

渲染所有组件后,如何在 Angular2 中运行 TypeScript 代码?

Angular2,TypeScript,如何读取/绑定属性值到组件类(在 ngOnInit 中未定义)[重复]

Angular 2 兄弟组件通信

降级使用 Typescript 编写的 angular2 组件。如何将其导入用 es5 编写的 angular 1 项目?

typescript 一个示例,显示动态地将模板注入Angular2组件的方式