Я недавно использую NgRx с эффектами для управления запросами отправки API.Мои запросы API находятся в службе, и мой эффект использует эту службу.Очень классический.
@Injectable({
providedIn: 'root'
})
export class MaterialService {
private url = "materials";
constructor(private http: HttpClient) { }
getMaterials () {
return this.http.get (this.url).pipe (
catchError (this.handleError)
);
}
handleError (error: HttpErrorResponse): Observable<never> {
return throwError (error.message);
}
}
@Injectable()
export class MaterialEffects {
@Effect() loadMaterial$ = this.dataPersistence.fetch(
MaterialActionTypes.LoadMaterial,
{
run: (action: LoadMaterial, state: MaterialPartialState) => {
return this.materialService.getMaterials ().pipe (
map (data => {
return new MaterialLoaded(data);
}),
// catchError (error => of (new MaterialLoadError (error)))
);
},
onError: (action: LoadMaterial, error) => {
console.error('Error', error);
return new MaterialLoadError(error);
}
}
);
...
В целом, он прекрасно работает.Мне это просто нравится:)
Но для определенных запросов мне нужно восстановить какой-то идентификатор, чтобы создать мой URL.Эти идентификаторы в основном являются общими идентификаторами.Например, идентификатор нашего клиента.https://my.example.com/perimeters/[PERIMETER_ID]/relationships/users
Как я могу использовать свой сервис для извлечения идентификатора своего контента из моего магазина, создания моего URL и возврата моего Observable, как и ожидалось?
Заранее спасибо