如何在两个同级组件之间传递数据?

时间:2019-03-06 02:23:37

标签: asp.net-mvc angular asp.net-web-api angular-ui-router angular-directive

<container>
  <navbar>
    <summary></summary>
    <child-summary><child-summary>
  </navbar>
  <content></content>
</container>

因此,在我的选择中,确实向和发送了值。

OnSelect方法在组件内部具有(更改)效果很好。

因此,我尝试使用@ Input,@ Output和@EventEmitter指令,但是除非继续使用父/子模式,否则我看不到如何将事件作为组件的@Input检索。我建立的所有示例在组件之间都有关系。

编辑:BehaviorSubject不起作用的示例(API的所有连接服务均正常运行,在启动时仅触发可观察到的行为,但在select值更改时不起作用)

2 个答案:

答案 0 :(得分:2)

首先在服务中创建一个BehaviorSubject

import { Injectable } from '@angular/core';
import { BehaviorSubject } from 'rxjs/BehaviorSubject';
@Injectable()
export class DataService {

  private messageSource = new BehaviorSubject("default message");
  currentMessage = this.messageSource.asObservable();

  constructor() { }

  changeMessage(message: string) {
    this.messageSource.next(message)
  }

}

答案 1 :(得分:0)

我创建了一个示例,以使用BehaviorSubject

在组件之间发送消息
@Injectable()
export class MyService {

private messageSource = new BehaviorSubject<string>('service');
currentMessage = this.messageSource.asObservable();


  constructor() {
  }

  changeMessage(message: string) {
    this.messageSource.next(message)
  }
}

您可以访问https://stackblitz.com/edit/behavior-subject-2019