You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

TS中ng-multiselect-dropdown配置翻译返回undefined如何解决

问题根因

你自定义的getTranslation函数存在异步时序问题:this.translateSvc.get()返回的是异步Observable,你在subscribe回调里给translation赋值之前,函数就已经把未初始化的translation返回了,所以配置项拿到的都是undefined。

解决方案

方案1:使用同步instant方法(推荐,翻译资源提前加载完成场景)

直接替换翻译函数的实现,用@ngx-translate内置的同步取值方法:

getTranslation(toTranslate: string): string {
  try {
    return this.translateSvc.instant(toTranslate);
  } catch (e) {
    return toTranslate; // 异常时返回原key作为兜底,避免出现undefined
  }
}

该方案前提是你的翻译资源已经在应用初始化阶段预加载完成,不会出现资源未加载就调用的情况。

方案2:等待翻译异步返回后再初始化配置

如果翻译资源是异步懒加载的,可以批量请求需要的翻译key,全部返回后再初始化下拉配置:

import { forkJoin } from 'rxjs';

// 批量请求所有需要的翻译项
const transKeys = ['Selecionar tudo', 'Limpar', 'Buscar'];
forkJoin(transKeys.map(key => this.translateSvc.get(key))).subscribe(([selectAllText, unSelectAllText, searchPlaceholderText]) => {
  this.countryDropdownSettings = {
    singleSelection: false,
    idField: 'countryId',
    textField: 'name',
    selectAllText,
    unSelectAllText,
    itemsShowLimit: 1,
    allowSearchFilter: true,
    searchPlaceholderText
  };
});

内容的提问来源于stack exchange,提问作者Thasumi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 11:09:01