为什么我的ngrx参数显示错误?

问题描述 投票:0回答:1

我有以下注册用户的服务:

public signup = (user:UserModel) => {
    console.log('UserService.user', user)

    return this.httpClient.post<{user:UserModel}>(this.url, {user}).pipe(
      tap(user => {
        console.log('UserService.user tap', user)
        this.store.dispatch(StoreUser({user}))
      })
   )
 }

我正在尝试将从后端收到的用户分派到 StoreUser 操作,但出现错误。这一行

this.store.dispatch(StoreUser({user})
中的用户参数有一条红线,表示有错误。似乎是类型错误的错误如下所示:

输入 '{ 用户:UserModel; }' 类型“UserModel”中缺少以下属性:firstName、lastName、密码、电子邮件、tokents(2739) user.actions.ts(6, 13):预期的类型来自属性“user”,该属性在类型“{ user: UserModel;”上声明。 }' (属性)用户:UserModel

这是 UserModel 类:

export class UserModel {
    public firstName:string = '';
    public lastName:string = '';
    public password:string = '';
    public email:string = '';
    public token:string = '';
}

这就是动作:

import { createAction, props } from "@ngrx/store";
import { UserModel } from "./user.model";

export const StoreUser = createAction(
    '[Store user] Store user',
    props<{ user:UserModel }>()
  );
angular typescript ngrx
1个回答
0
投票

我猜

user
中的
tap
的类型为
{ user: UserModel }

如果是这样,那么它要么是

tap(({ user }) => ...)
(在
user
周围用花括号括起来)或者是这样的:

tap(response => {
  const user = response.user
  console.log('UserService.user tap', user)
  this.store.dispatch(StoreUser({user}))
})
© www.soinside.com 2019 - 2024. All rights reserved.