Steven Yates
Steven Yates

Reputation: 2480

Angular2, prevent view caching in any browser

All,

Is it possible to prevent caching of views in Angular2?

With angular 1.x it was easy to modifier the headers to prevent such things using $httpProvider but i don't see anything similar in angular2.

Thanks

Steve

Upvotes: 2

Views: 3067

Answers (1)

Thierry Templier
Thierry Templier

Reputation: 202176

I see two ways to do that:

  • Option #1: use the BaseRequestOptions class

You could extend this class and set the header to use for each request:

@Injectable()
export class DefaultRequestOptions extends BaseRequestOptions{
    headers:Headers = new Headers({
        'Content-Type': 'application/x-www-form-urlencoded'
    });
}

And registers it as described below:

bootstrap(AppComponent,[
    HTTP_PROVIDERS,
    provide( RequestOptions, { useClass: DefaultRequestOptions })
});
  • Option #2: extend the Http class itself

You could also extend the Http class and set the headers you want in it, as described below:

@Injectable()
export class CustomHttp extends Http {
  constructor(backend: ConnectionBackend, defaultOptions: RequestOptions) {
    super(backend, defaultOptions);
  }

  request(url: string | Request, options?: RequestOptionsArgs): Observable<Response> {
    return super.request(url, options);        
  }

  get(url: string, options?: RequestOptionsArgs): Observable<Response> {
    // Add headers into options
    (...)
    return super.get(url, options);
  }

  (...)
}

And registers it as described below:

bootstrap(AppComponent, [
  HTTP_PROVIDERS,
  provide(Http, {
    useFactory: (backend: XHRBackend, defaultOptions: RequestOptions) => new CustomHttp(backend, defaultOptions),
    deps: [XHRBackend, RequestOptions]
  })
]);

Upvotes: 1

Related Questions