Angular 9-ngx-cookie-service路径问题

问题描述

我正在使用 ngx-cookie-service 包来存储一些与我的应用程序相关的数据。 我需要将此Cookie保存在基本路径'/'上,因此每次我确切地知道如何检索它。 我的这个Cookie需要更新,并且当这种情况发生时,新的Cookie必须存储在同一路径中(因此位于'/'中)。问题是有时刷新页面时,新的cookie被保存在新路径中,因此当我尝试使用this.cookieService.get(cookieName,'/')进行检索时,它显然会失败。即使我明确声明将'/'用作 path ,也会发生这种情况。它并不总是发生,这会导致调试更加困难。

这是我使用Cookie的服务

const urlParamsCookieName = 'errepiuapp-url-params';

/**
 * This service keeps track of the keys used to retrieve objects from the backend.
 */
@Injectable({
  providedIn: 'root'
})
export class KeyLookupService {

  private _lookupUrlSegments = ['students','macro','lto','sto','reports'];
  private _paramsMap$: BehaviorSubject<Map<string,any>>;

  private get paramsMap() {
    return this._paramsMap$.getValue()
  }

  constructor(
    private cookieService: CookieService,private router: Router 
  ) {
    if (!this.router.url.includes('auth') && !this.cookieService.check(urlParamsCookieName)) {
      this.router.navigate(['/auth']);
    }
    this._paramsMap$ = new BehaviorSubject<Map<string,any>>(
      new Map<string,any>(
        this.cookieService.check(urlParamsCookieName) ? 
          this.getParamsFromCookie().map((value,i) => [this._lookupUrlSegments[i],value]) : 
          this._lookupUrlSegments.map(segment => [segment,null])
      )
    );
    this._paramsMap$.subscribe(_ => {
      this.updateCookie();    //*********** PROBLEM HERE ***********
    });
    this.router.events.pipe(
      filter(event => event instanceof NavigationEnd),map(event => {
        this.updateCookie();    //*********** PROBLEM HERE ***********
      })
    ).subscribe();
    this.updateCookie();    //*********** PROBLEM HERE ***********
  }

  addParam(key: string,value: any) {
    this._paramsMap$.next(this.paramsMap.set(key,value));
  }

  public getParams(...lookupKeyword: string[]): Map<string,any> {
    if (lookupKeyword) {
      return new Map<string,any>([...this.paramsMap.keys()]
        .filter(key => lookupKeyword.includes(key))
        .map(key => [key,this.paramsMap.get(key)]));
    }
    return this.paramsMap;
  }

  private getParamsFromCookie(): any[] {
    return Array.from(this.cookieService.get(urlParamsCookieName).split(','));
  }

  private updateCookie() {
    if (this.cookieService.check(urlParamsCookieName)) {
      this.cookieService.delete(urlParamsCookieName,'/');
    }
    this.setCookie();
  }

  private setCookie() {
    this.cookieService.set(urlParamsCookieName,[...this.paramsMap.values()].toLocaleString(),undefined,'/');
  }

}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...