通过可观察对象将数据从组件传递到服务

时间:2019-10-01 14:10:31

标签: javascript angular rxjs

我需要将信息从组件A发送到服务,在那儿工作,然后再将其发送到组件B。A和B是同级兄弟。我需要组件A触发它,才能在组件B上获得理想的结果。

我正在尝试通过rxjs使用可观察对象来实现这一目标(我不知道这是否是这样做的最佳方法或实践)

当前我的组件A如下所示:

import { Observable } from "rxjs/Rx"
import { of, Subscription } from 'rxjs';
import { SoporteService    } from '../soporte/services/soporte.service';

public constructor( public _observable: Subscription, (...)

let observable = of (id_estado)
this._observable = observable.subscribe( (x:number) => {
} )

即使我完全不确定我应该如何接收服务上的数据,或者为什么我不使用.next

,我也可以按照一些指南将其结合在一起

保存上一个组件时,我会得到

Uncaught (in promise): NullInjectorError: StaticInjectorError(AppModule)[Component A]

如何发送这样的数据?

1 个答案:

答案 0 :(得分:1)

使用当前代码,您试图将可观察对象作为依赖项进行注入。相反,您应该将服务注入到组件A和B中,并在服务中提供组件A调用的方法以及组件B可以订阅的ObservableEventEmitter

像这样的东西

中介服务

@Injectable({
    providedIn: 'root'
})
export class MyService {

    public eventEmitter: EventEmitter<any> = new EventEmitter<any>();

    public methodThatCompnentACanCall(someValue: string) {
        this.eventEmitter.emit(someValue);
    }
}

A和B组件的构造器

public constructor(private mediator: MyService)

您可能需要搜索“中介模式”以获取更多信息。