Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 角度2-使用RXJS观测值_Angular_Rxjs - Fatal编程技术网

Angular 角度2-使用RXJS观测值

Angular 角度2-使用RXJS观测值,angular,rxjs,Angular,Rxjs,我在Angular 1中有以下JSFIDLE,它有两个组件,boxA和boxB,用于侦听MSGSService中定义的名为msgSubject的RXJS主题 mainCtrl通过msgService广播功能广播消息。如果boxA和boxB已订阅msgSubject(有取消订阅的选项),则更新的消息将显示在每个相应的组件视图中 我的问题是如何在Angular 2中复制这个?我在谷歌上搜索过,大部分教程都与HTTP和异步搜索相关。如果有人能告诉我设置主题、广播和订阅的语法,我将不胜感激。任何我非常

我在Angular 1中有以下JSFIDLE,它有两个组件,boxA和boxB,用于侦听MSGSService中定义的名为msgSubject的RXJS主题

mainCtrl通过msgService广播功能广播消息。如果boxA和boxB已订阅msgSubject(有取消订阅的选项),则更新的消息将显示在每个相应的组件视图中

我的问题是如何在Angular 2中复制这个?我在谷歌上搜索过,大部分教程都与HTTP和异步搜索相关。如果有人能告诉我设置主题、广播和订阅的语法,我将不胜感激。任何我非常感激的帮助。提前谢谢

角1码

HTML


您可以使用服务在两个组件之间进行通信:

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

  private broadcastSource = new Subject<string>();

  // Observable string streams
  // Return as observale to encapsulate the subject
  broadcastAnnounce$ = this.broadcastSource.asObservable();

  // Service message commands
  announceBoradcast(message: string) {
    this.broadcastSource.next(message);
  }
}
然后其他组件可以订阅广播:

BroadcastService.broadcastAnnounce$.subscribe((message) => {
    console.log(message);
})
以下是有关Angular2中组件之间通信的更多信息:

谢谢,这看起来正是我想要的,我会试试看,然后回来。还有.noob问题,$和的意思是什么?它只不过表明它是一个可观察的流:)很高兴听到:)@DNRN为什么不直接使用broadcastSource.subscribe()而不创建任何broadcastName$
import { Injectable } from '@angular/core';
import { Subject }    from 'rxjs/Subject';
@Injectable()
export class BroadcastService {

  private broadcastSource = new Subject<string>();

  // Observable string streams
  // Return as observale to encapsulate the subject
  broadcastAnnounce$ = this.broadcastSource.asObservable();

  // Service message commands
  announceBoradcast(message: string) {
    this.broadcastSource.next(message);
  }
}
BroadcastService.announceBoradcast("Hello World");
BroadcastService.broadcastAnnounce$.subscribe((message) => {
    console.log(message);
})