Почему получаю в get запросе ?id=[object%20Object]?
Вот такая ошибка
GET http://localhost:60397/printingedition/getprintingedition?id=[object%20Object]
Получаю printingEdition по id из сервера, метод в сервисе
getPrintingEdition(id: number): Observable<any>{
return this.http.get<PrintingEdition>(`${environment.apiUrl}printingedition/getprintingedition?id=` + id);
}
В компоненте с параметра получаю id
id: string;
В ngOnInit:
this.id = this.activateRoute.snapshot.paramMap.get('id');
Когда вывожу в консоль id, то выводит то что нужно. Ответ 2
console.log(this.id);
Дальше диспатчу action
this.store$.dispatch(new GetPrintingEdition(Number(this.id)));
Мой редюсер
export const getPrintingEditionReducer = (
state = initialGetPrintingEditionState,
action: GetPrintingEditionAction
): GetPrintingEditionState => {
switch (action.type){
case EGetPrintingEdition.GetPrintingEditionSuccess: {
return {
...state,
idPrintingEdition: action.payload,
printingEdition: action.payload,
};
}
default: {
return {
...state
};
}
}
};
Сам action
export class GetPrintingEdition implements Action{
public readonly type = EGetPrintingEdition.GetPrintingEdition;
constructor(public payload: number){}
}
export class GetPrintingEditionSuccess implements Action{
public readonly type = EGetPrintingEdition.GetPrintingEditionSuccess;
constructor(public payload: any){}
}
Стейт
export interface GetPrintingEditionState{
idPrintingEdition: number;
printingEdition: PrintingEdition;
}
export const initialGetPrintingEditionState: GetPrintingEditionState = {
idPrintingEdition: null,
printingEdition: null,
}
Effect отрабатывает и мне выводит в консоль иyформацию которую я запрашиваю по id
@Effect()
GetPrintingEdition = this.actions$.pipe(
ofType<printingEditionAction.GetPrintingEdition>(printingEditionAction.EGetPrintingEdition.GetPrintingEdition),
mergeMap((action: printingEditionAction.GetPrintingEdition) =>
this.adminService.getPrintingEdition(action.payload).pipe(
map((model) => {
console.log(model);
return new printingEditionAction.GetPrintingEditionSuccess(model);
})
))
)
AppState
export interface AppState{
account?: AccountState;
admin?: AdminState;
author?: AuthorState;
user?: UserState;
errorMessage?: BaseErrorState;
getPrintingEdition?: GetPrintingEditionState;
}
export const appReducers: ActionReducerMap<AppState> = {
}
export const metaReducers: MetaReducer<AppState>[] = !environment.production ? [] : [];
AppModule
@NgModule({
declarations: [
AppComponent,
],
imports: [
BrowserModule,
HttpClientModule,
AppRoutingModule,
StoreModule.forRoot(appReducers, { metaReducers }),
StoreModule.forFeature(appReducer.appReducer, appReducer.appReducers),
StoreDevtoolsModule.instrument({ maxAge: 25, logOnly: environment.production }),
EffectsModule.forRoot([GetPrintingEditionEffect]),
StoreRouterConnectingModule.forRoot(),
JwtModule.forRoot({
config:{
tokenGetter: tokenGetter,
allowedDomains: [environment.apiUrl],
}
}),
BrowserAnimationsModule,
FormsModule
],
providers:
[
{
provide: HTTP_INTERCEPTORS,
useClass: AuthInterceptor,
multi: true
},
AuthGuardService
],
bootstrap: [AppComponent]
})
export class AppModule { }
GetPrintingEdition selector
import { createSelector, createFeatureSelector } from '@ngrx/store';
import { PrintingEdition } from 'src/app/pages/printing-edition/models/printing-edition.interface';
import { appReducer } from '../reducers/app-reducer.reducer';
import { AppState } from '../state/app-state.state';
const selectPrintingEdition = createFeatureSelector<AppState>(appReducer);
export const getPrintingEdition = createSelector(
selectPrintingEdition,
(state: AppState) => state.getPrintingEdition.printingEdition
);