Angular 使用主题的两个组件之间的角度通信
我有两个角度组件,需要在单击时将对象从一个组件传递到另一个组件。 我的第一个组件具有以下特性Angular 使用主题的两个组件之间的角度通信,angular,observable,subject-observer,Angular,Observable,Subject Observer,我有两个角度组件,需要在单击时将对象从一个组件传递到另一个组件。 我的第一个组件具有以下特性 showEventDetails(event: Event) { this.eventsService.sendEventDetail(event) } 这里是我的自定义模型对象: export class Event { id: number title: string description: string url: string date: string } 事
showEventDetails(event: Event) {
this.eventsService.sendEventDetail(event)
}
这里是我的自定义模型对象:
export class Event {
id: number
title: string
description: string
url: string
date: string
}
事件服务文件如下所示:
export class EventsService {
eventDetailSubject = new Subject<any>();
constructor() {
}
sendEventDetail(event: Event) {
this.eventDetailSubject.next(event);
}
getEventDetail(): Observable<Event> {
return this.eventDetailSubject.asObservable();
}
但是,我注意到我无法接收第二个组件中的事件数据。我错过了什么?如果第二个组件不是第一个组件的子组件,是否有其他方法将此事件对象从一个组件传递到另一个组件?RxJS
Subject
仅在订阅后收到值时才会发出。相反,您可以使用缓冲区大小1。它可以缓冲最后发出的值,并在订阅时立即发出
导出类事件服务{
eventDetailSubject=新的ReplaySubject(1);
...
RxJSSubject
仅在订阅后收到值时才会发出。相反,您可以使用缓冲区大小1。它可以缓冲最后发出的值,并在订阅后立即发出
导出类事件服务{
eventDetailSubject=新的ReplaySubject(1);
...
在不应存在默认值的情况下,首选ReplaySubject
,因为null
可能导致意外错误在不应存在默认值的情况下,首选ReplaySubject
,因为null
可能导致意外错误
this.eventsService.eventDetailSubject.subscribe(event => {
this.eventCal = event
this.isLoading = false
}, error2 => {
this.isLoading = false
this.hasError = true
})