2016-08-31 2 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 устанавливает lan guage to en, ng2-translate начинает получать en.json с сервера, затем signUpSuccess.component устанавливает язык de, ng2-translate начинает t извлекает de.json с сервера. Если по какой-либо причине сейчас de.json выигрывает гонку и прибывает первым на клиента, тогда язык переключится на en, когда прибывает клиент en.json. Как я могу избежать этого?

ответ

0

Смотрите эту демонстрационную plunker: https://plnkr.co/edit/dfhdAI1o6VhVHFcnKmWH?p=preview

Вы можете использовать эту функцию

switchMap() 

С помощью этой функции предыдущий запрос будет отменен, если они все еще в ожидании.

+0

Спасибо за ваше время, чтобы написать код и помочь мне. Но ng2-translate - это угловой плагин. Я рассмотрю их код. ... Я думал, что это моя вина. – stofl

Смежные вопросы