如何在两个兄弟组件之间传递数据?

问题描述 投票:-1回答:2
<container>
  <navbar>
    <summary></summary>
    <child-summary><child-summary>
  </navbar>
  <content></content>
</container>

所以,在我有一个选择,确实发送值和。

使用(更改)内部组件可以很好地触发OnSelect方法。

所以,我尝试使用@ Input,@ Output和@EventEmitter指令,但我没有看到如何将事件检索为组件的@Input,除非继续使用父/子模式。我创建的所有例子都有组件之间的关系。

编辑:BehaviorSubject不工作的示例(API的所有连接服务都运行良好,只有在开始时才会触发observable,但是当select的值发生更改时不会触发)

asp.net-mvc angular asp.net-web-api angular-ui-router angular-directive
2个回答
1
投票

我创建了一个样本,通过使用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


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)
  }

}
© www.soinside.com 2019 - 2024. All rights reserved.