В приложении Angular построенной на схеме standalone в ряде классов другой класс отображается как пустой объект

Есть приложение на Angular 18, которое построено по принципу standalone, в нем есть компоненты, сервисы, а также вспомогательные классы, которые между собой взаимодействуют.

Есть вспомогательный в виде store класс "заказы", в котором хранятся полученные из сервиса заказов в виде Observable Есть вспомогательный класс в виде store "склады", в котором хранятся полученные из сервисов заказы в виде Observable

Есть вспомогательный в виде store класс "поступления" в котором обрабатываются данные из двух предыдущих классов:

@Injectable({ providedIn: 'root' })
export class IncomeStore {
  constructor(
    private readonly orderStore: OrderStore,
    private readonly warehouseStore: WarehouseStore
  ) {
    console.log(this.warehouseStore); // показывает { }
  }

  public income$ = combineLatest([
                       this.orderStore.orders$, 
                       this.warehouseStore.warehouses$
                   ]).pipe(
                       switchMap([orders, warehouses] => {
                            ............
                       })
                  ));
}

Суть проблемы:

  • Из класса IncomeStore warehouseStore в конструкторе и других методах виден как пустой объект { }, в orderStore виден со всеми свойствами и методами, которые в нем объявлены
  • В классе orderStore в конструкторе и других методах warehouseStore также пустой.
  • В warehouseStore класс orderStore виден со всеми свойствами и методами
  • В ряде других компонентов и store warehouseStore доступен

Класс OrderStore

@Injectable({ providedIn: 'root' })
export class OrderStore {
  constructor(
    private orderApi: OrderApi,
    private warehouseStore: WarehouseStore
  ) {
      console.log(this.warehouseStore); // показывает { }
  }
}

Класс WarehouseStore

@Injectable({ providedIn: 'root' })
export class WarehouseStore {
  constructor(
    private orderStore: OrderStore, // Из класса WarehouseStore orderStore доступен
    private warhouseApi: WarhouseApi
  ) {}
}

Приложение построено по принципу standalone классы WarehouseStore, OrderStore, IncomeStoreкак провайдеры нигде не объявлены, просто используются в constructor

В чем может быть проблема ? Почему класс warehouseStore может быть недоступен ?


Ответы (1 шт):

Автор решения: Алексей

Виной всему была циклическая зависимость

→ Ссылка