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