2016-08-31 70 views
1

app.component看起來是這樣的:與競爭條件NG2-翻譯

export class AppComponent { 

    public constructor(public translate: TranslateService) { 

     const userLang = navigator.language.split('-')[0]; 
     const acceptedUserLang = /(de|en)/gi.test(userLang) ? userLang : 'en'; 
     this.translate.setDefaultLang('en'); 
     this.translate.use(acceptedUserLang); 
    } 
} 

app.routing具有以下定義:

const appRoutes: Routes = [ 
    {path: 'signUpSuccess/:language', component: SignUpSuccessComponent}, 
]; 

而且我signUpSuccess.component

export class SignUpSuccessComponent { 

    public constructor(translate: TranslateService, route: ActivatedRoute) { 
     translate.use(route.snapshot.params['language']); 
    } 
} 

當我加載/signUpSuccess/de,app.component設置網頁量到en,ng2-translate開始從服務器獲取en.json,然後signUpSuccess.component將語言設置爲de,ng2-translate從服務器開始獲取de.json。如果由於任何原因,現在de.json贏得比賽並首先到達客戶端,那麼當en.json到達客戶端時語言將切換到en。我怎樣才能避免這種情況?

回答

0

看到這個演示plunker:https://plnkr.co/edit/dfhdAI1o6VhVHFcnKmWH?p=preview

您可以使用此功能

switchMap() 

使用此功能,以前的請求將被取消,如果他們仍懸而未決。

+0

謝謝你的時間,編寫代碼並幫助我。但ng2-translate是一個有角度的插件。我會研究他們的代碼。 ...我認爲這一定是我的錯。 – stofl