我需要将信息从组件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]
如何发送这样的数据?
答案 0 :(得分:1)
使用当前代码,您试图将可观察对象作为依赖项进行注入。相反,您应该将服务注入到组件A和B中,并在服务中提供组件A调用的方法以及组件B可以订阅的Observable
或EventEmitter
。
像这样的东西
中介服务
@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)
您可能需要搜索“中介模式”以获取更多信息。