/ / Správny spôsob importu abstraktnej triedy do interceptora - uhlový, strojopis, uhlový5

Správny spôsob importu abstraktnej triedy do interceptora - uhlový, strojopisný, uhlový5

Mám problém s importovaním abstraktnej triedy do http interceptora. Chyba: „metóda“ nie je funkciou. Vyhlásil som triedu v module:

@NgModule({
declarations: [
RootComponent
],
imports: [
BrowserModule,
Ng2Webstorage,
ApplicationRouterModule,
HttpClientInMemoryWebApiModule.forRoot(InMemoryDataService)
],
exports: [],
providers: [
RootService,
[**HttpCache**],
{
provide: HTTP_INTERCEPTORS,
useClass: RequestInterceptor,
multi: true
}
[...]

Tiež importoval triedu na interceptor (vlastne sa snažím vytvoriť interceptor na vyrovnávacej pamäti):

import { HttpCache } from "./interface/http-cache.interface";

@Injectable()
export class CachingInterceptor implements HttpInterceptor {

constructor(private cache: HttpCache) {}
intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {

if (req.method !== "GET") {
console.warn("HTTP request different form GET");
return next.handle(req);
}

console.warn("Caching Interceptor: ", this.cache);

// First, check the cache to see if this request exists.
const cachedResponse = this.cache.get(req);

Celá abstraktná trieda vyzerá takto:

export abstract class HttpCache {
/**
* Returns a cached response, if any, or null if not present.
*/
abstract get(req: HttpRequest<any>): HttpResponse<any>|null;

/**
* Adds or updates the response in the cache.
*/
abstract put(req: HttpRequest<any>, resp: HttpResponse<any>): void;
}

Pri spustení aplikácie sa zobrazí chyba ERROR TypeError: this.cache.get is not a function.

Prosím o pomoc, ktorá súvisí s:

angular.io/guide/http#intercepting-all-requests-or-responses

odpovede:

2 pre odpoveď č. 1

Robíte zle. HttpCache je abstraktná trieda a je potrebné implementovať metódy triedy HttpCache. Stačí vytvoriť triedu a implementovať ju. Napíšte svoju logiku v metóde zadanej do požiadavky na vyrovnávaciu pamäť (dáta), ktorú chcete, a získajte tieto údaje uložené v pamäti z get.

Dúfam, že to pomôže