Angular InstantSearch是一个强大的搜索库,但在使用过程中,可能会遇到缓存数据不更新的问题。为了解决这个问题,可以使用刷新缓存服务。
npm install angular-instantsearch algoliasearch --save
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { FormsModule } from '@angular/forms';
import { AppComponent } from './app.component';
import { HttpClientModule } from '@angular/common/http';
import { ReactiveFormsModule } from '@angular/forms';
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
import {
AlgoliaModule,
AlgoliaConfig,
InstantSearchService,
FACET_TYPE,
PRICE_TYPE,
} from 'angular-instantsearch';
import { environment } from '../environments/environment';
@NgModule({
declarations: [AppComponent],
imports: [
BrowserModule,
BrowserAnimationsModule,
FormsModule,
ReactiveFormsModule,
HttpClientModule,
AlgoliaModule.forRoot(),
],
providers: [
{
provide: AlgoliaConfig,
useValue: environment.algoliaConfig,
},
InstantSearchService,
{ provide: FACET_TYPE, useValue: 'regular' },
{ provide: PRICE_TYPE, useValue: 'number' },
],
bootstrap: [AppComponent],
})
export class AppModule {}
import { Injectable } from '@angular/core';
import { InstantSearchService } from 'angular-instantsearch';
@Injectable({
providedIn: 'root',
})
export class CacheService {
private facets: any;
constructor(private instantSearch: InstantSearchService) {
this.facets = {};
}
public getFacets(index: string, query: string): Promise {
return new Promise((resolve, reject) => {
if (this.facets.hasOwnProperty(index)) {
if (JSON.stringify(this.facets[index].query) === JSON.stringify(query)) {
resolve(this.facets[index].facets);
} else {
this.refreshCache(index
上一篇:Angularinputtype="date"displayingincorrectvalue,timezoneissue
下一篇:AngularInterceptorignoringobservablewhenrefreshTokenisinvalidandnotcatchingerrors