我有以下注册用户的服务:
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 }>()
);
我猜
user
中的 tap
的类型为 { user: UserModel }
。
如果是这样,那么它要么是
tap(({ user }) => ...)
(在user
周围用花括号括起来)或者是这样的:
tap(response => {
const user = response.user
console.log('UserService.user tap', user)
this.store.dispatch(StoreUser({user}))
})