【发布时间】:2021-03-23 14:42:27
【问题描述】:
我不明白为什么我的创建帐户 api 被调用了两次。当我删除构造函数部分时,api会被调用一次,但我需要让我的帐户创建成功。
当我处于以下配置时,我有两次调用网络服务:
public onSubmit() {
this.submitted = true;
// stop here if form is invalid
if (this.registerForm.invalid) {
return;
}
this.store.dispatch(
userAction.userCreateRequest({
data: this.registerForm.value,
})
);
}
在我的constructor 中,我正在寻找成功:
constructor(
private store: Store<fromRoot.State>,
private formBuilder: FormBuilder,
private route: ActivatedRoute,
private userEffects: UserEffects,
private modalService: NgbModal,
private sanitizer: DomSanitizer,
private userService: UserService ) {
this.loading$ = store.select(fromRoot.getUserLoading);
this.userEffects.create$
.pipe(ofType(UserTypes.USER_CREATE_SUCCESS))
.subscribe((res) => {
console.log("SUCCESSS TEST");
});
}
effect.ts 具有以下定义:
create$ = createEffect(() =>
this.actions$.pipe(
ofType(UserTypes.USER_CREATE_REQUEST),
exhaustMap((action) => {
const { data } = action;
return this.userService.create(data as UserActions.UserInfosData).pipe(
map((user) => UserActions.userCreateSuccess({ user })),
catchError((error) =>
of(UserActions.userCreateFailure({ error }))
)
);
})
)
);
action.ts:
// create User
export const userCreateRequest = createAction(
UserTypes.USER_CREATE_REQUEST,
props<{ data: UserInfosData }>()
);
export const userCreateSuccess = createAction(
UserTypes.USER_CREATE_SUCCESS,
props<{ user: any }>()
);
export const userCreateFailure = createAction(
UserTypes.USER_CREATE_FAILURE,
props<{ error: any }>()
);
【问题讨论】:
标签: angular rxjs angular9 subscribe dispatch