记忆选择器不能分配给类型为 'string' 的参数



我正在使用Angular 6和NgRX 6。

我有一个减速器看起来像这样——

export interface IFlexBenefitTemplateState {
original: IFlexBenefitTemplate;
changes: IFlexBenefitTemplate;
count: number;
loading: boolean;
}
export const INITIAL_STATE: IFlexBenefitTemplateState = {
original: null,
changes: null,
count: 0,
loading: true,
};
export default (state = INITIAL_STATE, { type, payload }) => {
switch (type) {
case STAGE_TEMPLATE_CHANGE:
const pendingChanges = Object.assign({}, state.changes.sections);
const newSection = Object.assign({}, pendingChanges[payload.key], payload, {
changeType: 'updated',
});
return {
...state,
changes: {
sections: Object.assign({}, pendingChanges, { [payload.key]: { ...newSection } }),
},
count: !pendingChanges[payload.key].hasOwnProperty('changeType') ? state.count + 1 : state.count,
};
default:
return state;
}
};

我有一个选择器这个抓取state.count,看起来像这样——

export const changesCount = createSelector(getStore, (state: IFlexBenefitTemplateState) => state.count);

我试图浮出水面这是我的模板,如下所示-

@Component({
selector: 'app-page-header-component',
templateUrl: './page-header.component.html',
})
export class PageHeaderComponent implements OnInit {
public count$: Observable<number>;
public language: string;
constructor(private store: Store<ICommonAppState>) {}
ngOnInit(): void {
this.count$ = this.store.select(changesCount);
this.language = 'English';
}
}

但是,this.count$返回错误

[ts] Argument of type 'MemoizedSelector<IBenefitsState, number>' is not assignable to parameter of type 'string'.

我一辈子都无法理解这是怎么回事?

我会检查您是否将正确的接口传递到store注入中。

IFlexBenefitTemplateState存在于ICommonAppState上吗?

我遇到了同样的错误。 问题不是我的商店中有错误的界面。 相反,我使用了错误的选择器。

感谢@nodediggity让我朝着正确的方向前进。

我也有类似的错误。它仅在严格模式下使用角度时显示。

从 https://ngrx.io/guide/store/selectors

使用严格模式时,select 方法将期望传递一个选择器,该选择器的基本选择来自对象。
这是 createFeatureSelector 在仅提供一个泛型参数时的默认行为

仅使用一个泛型的createFeatureSelector将修复它

export const selectFeature = createFeatureSelector<FeatureState>(featureKey);

最新更新