Создать несколько предметов поведения в одном сервисе - PullRequest
1 голос
/ 06 марта 2020

Я пытаюсь подключиться к нескольким службам после входа в мое приложение. Я создал служебный файл, и в нем есть функция, которая будет работать с несколькими apis и инициализировать объекты поведения. Но происходит то, что все субъекты поведения инициализируются одними и теми же данными API. Как я могу гарантировать, что определенные данные API попадают в необходимую переменную субъекта behvior. Вот мой код

import { Injectable } from '@angular/core';
import { BehaviorSubject } from 'rxjs';
import { environment } from 'environments/environment';
import { IStatusRepository } from '../interfaces/istatus-repository';
import { HttpClient } from '@angular/common/http';
import { IZone } from '../interfaces/izone';

@Injectable({
    providedIn: 'root'
})

export class SystemStorageService {

    statusReposDatasource: BehaviorSubject<IStatusRepository[]> = new BehaviorSubject([]);
    zonesDatasource: BehaviorSubject<IZone[]> = new BehaviorSubject([]);

    statusRepos = this.statusReposDatasource.asObservable();
    zones = this.zonesDatasource.asObservable();

    constructor(
        private http:HttpClient
    ) {}

    setStatusRepos() {
        this.http.get<IStatusRepository[]>(`${environment.url}/StatusRepositories`).subscribe(res => {
            console.log(res);
            this.statusReposDatasource.next(res);
        });

        this.http.get<IZone[]>(
            `${environment.url}/Zones`
        ).subscribe(val => {
            console.log(val);
            this.zonesDatasource.next(val);
        });
    }
}

Результаты

enter image description here

...