Передача данных из компонента в сервис через наблюдаемые - PullRequest
0 голосов
/ 01 октября 2019

Мне нужно отправить информацию из компонента А в Сервис, обработать ее там, а затем отправить в компонент Б. А и Б - братья и сестры. Мне нужен компонент 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 Ответ

1 голос
/ 01 октября 2019

В текущем коде вы пытаетесь внедрить наблюдаемое как зависимость. Вместо этого вы должны внедрить свой сервис в оба компонента A и B и предоставить метод в сервисе, который вызывает компонент A, и Observable или EventEmitter, на который может подписаться компонент B.

Примерно так:

Служба посредника

@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)

Вы можете выполнить поиск по «шаблону посредника» для получения дополнительной информации ..

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...