我目前正在尝试在新项目上使用ngrx。我做的是我写了一个登录组件,用户可以在其中输入凭据。然后我发送一个包含登录信息的新动作。
到目前为止这是有效的。现在我试着玩ngrx效果。效果是正确的,因为当我尝试在map函数中访问我的自定义模型的'email'属性时,它总是返回undefined,但是当我调试时,显示正确的值。也许有些代码会在这里提供帮助:
@Effect()
auth$: Observable<Action> = this.actions$.pipe(
ofType<authActions.Authenticate>(authActions.AUTHENTICATE),
map((creds: LoginViewModel) => {
const appUser = new AppUserViewModel(creds.email, 'Test');
return new authActions.AuthenticationSuccessfull(appUser);
})
);
正如您所看到的,我正在传递凭证和LoginViewModel并尝试访问“email”属性。我总是因为该属性值而未定义。在这里你可以看到我调试时的值是什么。
您可以看到我在调试时设置了email属性。有人有提示或解释为什么我无法访问该属性的价值?我在这里有误会吗?
因为即使我制作了一个console.log(credentials.email),也表示未定义
用户类:
export class AppUserViewModel {
public email: string;
public userName: string;
constructor(email: string, userName: string) {
this.email = email;
this.userName = userName;
}
}
和LoginViewModel类
export class LoginViewModel {
public email: string;
public password: string;
constructor(email: string, password: string) {
this.email = email;
this.password = password;
}
}
我这样发出我的行动:
onSubmit() {
this._store.dispatch(new authActions.Authenticate(this.loginModel));
this.submitted = true;
}
亲切的问候
答案 0 :(得分:0)
我更正了我的错误。问题是当我分派登录信息时,我通过了我的loginModel,它被绑定到表单值上。这导致值未定义。
代替
this._store.dispatch(new authActions.Authenticate(this.loginModel));
现在使用它,我可以工作了
this._store.dispatch(
new authActions.Authenticate({
email: this.loginModel.email,
password: this.loginModel.password
})
);
向Okan Aslankan表示感谢,由于您的提示,我检查了我的代码并发现了错误:)