Javascript 单击事件时将值设置为APP_BASE_HREF

Javascript 单击事件时将值设置为APP_BASE_HREF,javascript,angular,angular-ui-router,Javascript,Angular,Angular Ui Router,目前我正在使用APP_BASE_HREF将当前语言设置为我的应用程序的BASE HREF const appLanguageProvider: any[] = [ { provide: APP_BASE_HREF, useFactory: appInitializerFactory, deps: [ TranslateService ] } ]; export const appInitializerFactory = ( translateService

目前我正在使用APP_BASE_HREF将当前语言设置为我的应用程序的BASE HREF

const appLanguageProvider: any[] = [
  {
    provide: APP_BASE_HREF,
    useFactory: appInitializerFactory,
    deps: [ TranslateService ]
  }
];

export const appInitializerFactory =  (
  translateService: TranslateService,
) => {
  return translateService.currentLang;
};

Base href在应用程序初始化阶段设置正确,但我想在用户选择新语言后更改应用程序的Base href。我怎样才能做到这一点呢?

为什么不直接在组件中注入
TranslateService
标记,并根据需要设置新语言

大概是这样的:

changeLang(lang: string) {
   this.translateService.use(lang);
}

为什么不直接在组件中注入
TranslateService
标记并按需设置新语言

大概是这样的:

changeLang(lang: string) {
   this.translateService.use(lang);
}

如果要在运行时编辑令牌提供程序,可以使用以下技巧-使用DI注入注入器,然后:

this.injector.create({providers: [...]})

如果要在运行时编辑令牌提供程序,可以使用以下技巧-使用DI注入注入器,然后:

this.injector.create({providers: [...]})

但我也需要更改URL中的语言。我正在我的应用程序中将语言设置为base href。那么,你基本上是想在运行时更改提供程序吗?这正是我想要的。我会发布一个答案,但我也需要在URL中更改语言。我正在我的应用程序中将语言设置为base href。那么,你基本上是想在运行时更改提供程序吗?这正是我想要的。我将发布一个答案。我希望找到这个问题的答案。嗯,我希望找到这个问题的答案。