2016-03-21 8 views
1

In eckig1 hatte ich die Angewohnheit, eine httpProvider.interceptors zu erstellen, die eine zufällige Variable (oder eine Versionsnummer) anschloss, um den browserseitigen Cache bestimmter Dateien zu verhindern. Ich habe es die meiste Zeit für die Vorlagendateien verwendet.Angular2 append params zu Vorlagen-URL

Wie kann ich das Gleiche in angular2 tun?

Hinweis: Ich kann keine Lösung mit dem HTTP Service verwenden, da es nicht für das Laden der Ansichten Vorlagen

Antwort

2

Ich habe eine Lösung gefunden. Das Vorlagensystem zum Erstellen der Ansicht einer Komponente verwendet direkt den Dienst XHR, der in XHRImpl implementiert ist. Sie können dies in der normalizeTemplate Methode der TemplateNormalizer Klasse anzeigen.

Meine Lösung bestand darin, diese Implementierung zu erweitern und die Get-Methode zu überschreiben.

import { XHRImpl } from 'angular2/src/platform/browser/xhr_impl' 
import { XHR } from 'angular2/compiler' 

class VersionedXHRImpl extends XHRImpl { 
    get(url) { 
    const separator = url.indexOf('?') === -1 ? '?' : '&' 
    url = url + separator + 'v=' + config.version 
    return super.get(url) 
    } 
} 

bootstrap(App, [ 
    provide(XHR, {useClass: VersionedXHRImpl}) 
]) 
+0

Interessant, wirklich interessant. Upvoted! –

0

verwendet zu sein scheint, wenn ich Sie richtig verstanden habe man kann es leicht tun, wie folgt

@Component({ 
    templateUrl : 'myTemplate.html?'+(new Date().getTime()) 
}) 
+0

Ja. Ich habe daran gedacht. Aber ich möchte es für alle Vorlagen auf einmal machen, anstatt es in jeder Komponente zu setzen. – jobou