Аргумент типа "shop" не может быть присвоен параметру типа "items" | «Корзина»» - PullRequest
0 голосов
/ 17 марта 2020

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

import { select, Store } from '@ngrx/store';
import { GetItems } from '../store/actions';
import { Product } from '../product/product.component';

  @Component({
    selector: 'app-home',
    templateUrl: './home.component.html',
    styleUrls: ['./home.component.scss']
  })
  export class HomeComponent implements OnInit {
    constructor(private store: Store<{ items: Product[]; cart: [] }>) {
      store.pipe(select('shop')).subscribe(data => (this.items = data.items));
    }

    items: Product[] = [];

    ngOnInit() {
      this.store.dispatch(new GetItems());
    }
  }

полученная ошибка:

src / app / home / home.component.ts: 13: 25 - ошибка TS2769: перегрузка не соответствует этому вызову. Перегрузка 1 из 8, '(mapFn: (состояние: {items: Product []; корзина: [];}, реквизиты: неизвестно) => неизвестно, реквизиты ?: неизвестно): (источник $: наблюдаемый <{items: Product []; cart: [];}>) => Observable ', выдал следующую ошибку. Аргумент типа «магазин» не может быть присвоен параметру типа (состояние: {items: Product []; cart: [];}, реквизиты: unknown) => unknown '. Перегрузка 2 из 8, '(ключ: "items" | "cart"): (source $: Observable <{items: Product []; cart: [];}>) => Observable <[] | Продукт []> ', выдал следующую ошибку. Аргумент типа "shop" не может быть присвоен параметру типа "items" | "корзина" '.

13 store.pipe (select (' shop ')). subscribe (data => (this.items = data.items)); ~~~~~~

src / app / home / home.component.ts: 13: 71 - ошибка TS2339: свойство 'items' не существует для типа 'unknown'.

13 store.pipe (select ('shop')). Subscribe (data => (this.items = data.items));

Кажется, я не могу найти проблему. Даже запуск приложения доставляет мне трудности. Иногда он начинается в одном go, иногда мне нужно попробовать 5 раз. Но странно то, что в тот момент, когда он начинается, все работает как целое, но с ошибками в моем CMD.

Я чувствую, что с моим ngrx / store что-то не так.

1 Ответ

0 голосов
/ 17 марта 2020

Чтобы получить более подробные сведения, вам необходимо выполнить следующие действия: c error - 1) Создать интерфейс (AppState) и передать его во время запуска хранилища, что будет исходным состоянием -

private store: Store<AppState>

2) Создайте Selector / FeatureSelector для выбора любой части состояния.

Более подробную информацию вы можете найти здесь - https://ngrx.io/guide/store/selectors

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