Angular兄弟组件之间使用rxjs的Observable发布订阅者模式进行交互

文章介绍了如何在Angular应用中使用发布/订阅者模式(通过`MessageService`),实现父子、兄弟组件之间的消息传递,利用`Observable`和`Subject`进行高效通信并管理订阅。
摘要由CSDN通过智能技术生成

用处

发布订阅者模式可以不用考虑组件之间的调用关系,用于父子,兄弟等组件传参。

创建一个message.service.ts文件

import { Injectable } from '@angular/core';
import { Observable, Subject } from 'rxjs';
@Injectable({
  providedIn: 'root'
})
export class ShareMsgService {
  constructor() { }
  private msg = new Subject<any>();
  //发送消息
  sendMessage(message: any) {
    this.msg.next(message);
  }
  //清除消息
  clearMessage() {
    this.msg.next();
  }
  //获取消息
  getMessage(): Observable<any> {
    return this.msg.asObservable();
  }
}

发送消息

import { ShareMsgService } from '../../message.service';
constructor(
	private ShareMsgService: ShareMsgService,
) { }
this.ShareMsgService.sendMessage('想发送的消息')

接收消息

import { ShareMsgService } from '../../message.service';
import { Subscription } from "rxjs";
constructor(
	private ShareMsgService: ShareMsgService,
) { }
subscription: Subscription
ngOnInit() {
	// 订阅
	this.subscription = this.ShareMsgService.getMessage().subscribe(data => {
		this.accSettingFilter = data
	})
}

ngOnDestroy() {
	this.subscription.unsubscribe(); // 取消订阅
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值