Акита и угловая ошибка: магазин StaticInjector и NullInjector, запрос - PullRequest
0 голосов
/ 17 октября 2019

Я столкнулся с ошибкой при внедрении управления государством Акита в проекте Angular. Я просто предоставлю краткий ответ, чтобы некоторые люди, подобные мне, могли решить эту проблему.

Нет ясного понимания этого в документах и ​​примерах Акиты.

export interface ItemState extends EntityState<Item> {}

@StoreConfig({ name: 'items' })
export class ItemsStore extends EntityStore<ItemState> {
  constructor() {
    super();
  }
}

Я получаю ошибку: StaticInjectorError (Платформа: ядро) [ItemsService -> ItemsStore]: NullInjectorError: Нет провайдера для ItemsStore!

Должно работать

Ответы [ 2 ]

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

Полагаю, ItemService - это услуга, созданная вами, но вы просто забыли добавить поставщика для того же. Либо вы можете изменить декоратор @Injectable () на следующий:

@Injector({
    providedIn: 'root'
})

, либо вы можете добавить сервис в качестве провайдера в модуль, который вы используете, внутри сервиса.

это будет похоже на

@ngModule({
...,
providers: [ItemService,...],
...
})

Не забудьте импортировать службу в модуль.

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

Это не упоминается в документации, но для того, чтобы это работало, нам просто нужно добавить provideIn: 'root'

export interface ItemState extends EntityState<Item> {}
@Injectable({
  providedIn: 'root'
})
@StoreConfig({ name: 'items' })
export class ItemsStore extends EntityStore<ItemState> {
  constructor() {
    super();
  }
}

То же самое для ItemsQuery. Надеюсь, это было полезно для кого-то

...