![](/img/trans.png)
[英]Using shareReplay(1) in Angular - still invokes http request?
[英]how use shareReplay(1) in angular?
在 angular13 中使用 shareReplay(1) 时出现错误我的代码是
import { HttpClient, HttpParams } from '@angular/common/http';
import { Injectable } from '@angular/core';
import { Observable, of } from 'rxjs';
import { shareReplay } from 'rxjs-compat/operator/shareReplay';
import { map } from 'rxjs/operators';
import { environment } from 'src/environments/environment';
interface mydatamodel{
something:any;
}
@Injectable({
providedIn: 'root'
})
export class AdoServicesService {
data$;
cachedUsers$: Observable<any>;
constructor(private http: HttpClient) { }
private apiURL = environment.apiURL
getUsers(filename:string,database:string,procedure:string,ParamList:string): Observable<any>{
let finalurl=this.apiURL;
let params = new HttpParams();
params = params.append('filename',filename);
params = params.append('database',database);
params = params.append('procedure',procedure);
params = params.append('ParamList',ParamList);
if (!this.cachedUsers$) {
this.cachedUsers$ = this.http.get(finalurl, {params: params}).pipe(
map((response: any) => response.data),
shareReplay(1)
);
}
return this.cachedUsers$;
}
}
此错误正在显示
没有重载匹配此调用。 Overload 1 of 2, '(this: Observable, config: ShareReplayConfig): Observable',给出了以下错误。 “void”类型的“this”上下文不可分配给“Observable”类型的方法“this”。 Overload 2 of 2, '(this: Observable, bufferSize?: number | undefined, windowTime?: number | undefined, scheduler?: SchedulerLike | undefined): Observable',给出了以下错误。 “void”类型的“this”上下文不可分配给“Observable”类型的方法“this”。ts(2769)
问题也可能来自导入,它应该是: import { shareReplay } from 'rxjs/operators';
这是一个工作示例: https ://stackblitz.com/edit/angular-ivy-rzbd1v?file=src/app/app.service.ts
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.