Свойство не существует для типа typeof app.module

#angular #ngrx #ng-modules

#angular #ngrx #ng-модули

Вопрос:

 import { StoreModule } from "@ngrx/store";
import { currentPurchase } from "../shared/index";

@NgModule({
 imports: [
        IonicModule.forRoot(MyApp, {}),
        HttpModule,
        StoreModule.provideStore({currentPurchase})
    ]
..
  

Я получаю Property currentPurchase' does not exist on type typeof app.module. импортированный редуктор, который выглядит следующим образом:

 import { ActionReducer, Action } from "@ngrx/store";
import { ActionType } from "./action-type";
import { PurchaseModel } from "../purchase/purchase.model";

export const currentPurchase: ActionReducer<PurchaseModel> = (state:PurchaseModel = new PurchaseModel(), action:Action) => {

    switch (action.type) {

        case ActionType.SET_PURCHASE:
            return (action.payload !== null) ? action.payload : new PurchaseModel();
        case ActionType.UPDATE_PURCHASE:
            return Object.assign({}, state, action.payload);
        default:
            return state;
    }
};
  

Также:

введите описание изображения здесь

Любая помощь приветствуется.

Комментарии:

1. Является ли оператор импорта для вашей текущей покупки правильным? Эта ошибка обычно отображается, когда импорт отсутствует / некорректен.

2. Спасибо — я попробовал это, к сожалению, та же ошибка.

Ответ №1:

Для вашей второй ошибки вам необходимо установить типы es6-shim, как описано здесь: https://github.com/angular/angular/issues/7033#issuecomment-183249303

Вы также можете сделать это с типами в вашем пакете json с помощью:

 npm i @types/es6-shim -S
  

Комментарии:

1. Я установил это, но WebStorm все еще показывает ошибку (даже после перезапуска)

2. Был ли каталог добавлен в @types в node_modules ? dropbox.com/s/q8jwwr9o2wwbuzo /…

Ответ №2:

Используйте нетипизированное function вместо введенного const в редукторах, например, как:

Сбой с ng2-окончательный AoT:

 export const settings: ActionReducer<SettingsModel> = (state:SettingsModel = new SettingsModel(), action:Action) => {

    switch (action.type) {
        case ActionType.SET_SETTINGS:
            return (action.payload !== null) ? action.payload : new SettingsModel();
        case ActionType.UPDATE_SETTINGS:
            console.log(Object.assign(state, {pin: Object.assign(state.pin, action.payload.pin)}));
            return Object.assign({}, state, {pin: Object.assign(state.pin, action.payload.pin)});
        default:
            return state;
    }
};
  

Работа с ng2-конечным AoT:

 export function settings (state:SettingsModel = new SettingsModel(), action:Action) {

    switch (action.type) {
        case ActionType.SET_SETTINGS:
            return (action.payload !== null) ? action.payload : new SettingsModel();
        case ActionType.UPDATE_SETTINGS:
            console.log(Object.assign(state, {pin: Object.assign(state.pin, action.payload.pin)}));
            return Object.assign({}, state, {pin: Object.assign(state.pin, action.payload.pin)});
        default:
            return state;
    }
};
  

Подробнее об этом (он не скажет, почему): https://github.com/ngrx/store/issues/190