Angular 与ng2的竞争条件

Angular 与ng2的竞争条件,angular,race-condition,ng2-translate,Angular,Race Condition,Ng2 Translate,我的app.component如下所示: export class AppComponent { public constructor(public translate: TranslateService) { const userLang = navigator.language.split('-')[0]; const acceptedUserLang = /(de|en)/gi.test(userLang) ? userLang : 'en';

我的
app.component
如下所示:

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);
    }
}
My
应用程序路由具有以下定义:

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
。如何避免这种情况?

请参阅此演示程序:

你可以使用这个功能

switchMap()
使用此功能,如果上一个请求仍处于挂起状态,则将取消该请求。

请参阅此演示程序:

你可以使用这个功能

switchMap()

使用此功能,如果上一个请求仍处于挂起状态,则将取消该请求。

感谢您抽出时间编写代码并帮助我。但ng2翻译是一个角度插件。我会调查他们的代码。。。我想这一定是我的错。谢谢你抽出时间来编写代码并帮助我。但ng2翻译是一个角度插件。我会调查他们的代码。。。我想这一定是我的错。