繁体   English   中英

如何在角度中使用 shareReplay(1)?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM