Last active
November 14, 2018 10:47
-
-
Save SandeepThomas/9341d0044e18372ef2088ea01d2e6808 to your computer and use it in GitHub Desktop.
ngx translate custom loader
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
* Custom Translate Loader to reload lang JSON on network failure | |
*/ | |
import { TranslateLoader } from "@ngx-translate/core"; | |
import { Injectable } from "@angular/core"; | |
import { HttpHeaders, HttpClient } from "@angular/common/http"; | |
import { ConnectionService } from "."; | |
import { Observable } from "rxjs"; | |
import { filter, take } from "rxjs/operators"; | |
@Injectable() | |
export class CustomTranslateLoader implements TranslateLoader { | |
private contentHeader = new HttpHeaders({ "Content-Type": "application/json", "Access-Control-Allow-Origin": "*" }); | |
constructor(private http: HttpClient, private connectionService: ConnectionService) { | |
} | |
getTranslation(lang: string): Observable<any> { | |
const apiAddress = "/locale/" + lang + ".json"; | |
const callJSON = (observer) => { | |
this.connectionService.monitor() | |
.pipe(filter((isConnected: any) => isConnected), take(1)) | |
.subscribe(() => { | |
this.http.get(apiAddress, { headers: this.contentHeader }) | |
.subscribe((res: Response) => { | |
observer.next(res); | |
observer.complete(); | |
}, (error) => { | |
callJSON(observer); | |
}); | |
}); | |
} | |
return Observable.create(observer => { | |
this.http.get(apiAddress, { headers: this.contentHeader }) | |
.subscribe((res: Response) => { | |
observer.next(res); | |
observer.complete(); | |
}, (error) => { | |
callJSON(observer); | |
}); | |
}); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment