Можно ли динамически добавлять ag-grid локализации? - PullRequest
0 голосов
/ 18 января 2019

Я использую AgGridModule Угловую обертку ag-grid. Мое приложение представляет собой приложение Angular AOT, которое обрабатывает локализацию с использованием библиотеки ngx-translate (которая динамически загружает файлы данных перевода при загрузке страницы для выбранного на данный момент языка). Это означает, что переводы доступны только асинхронно. Поэтому я не могу просто установить свойство localeText в gridOptions ( в соответствии с рекомендациями ), поскольку у меня нет текстов до создания сетки.

Кто-нибудь знает, как справиться с этим сценарием? В идеале я бы просто назначил RxJS Observable свойству localeText, которое отправило бы соответствующий текстовый объект, когда это было бы готово, но в данный момент это не работает.

1 Ответ

0 голосов
/ 19 января 2019

Это можно сделать, указав свой localeTextFunc. Эта функция берет ключ из сетки и использует функцию перевода (в нашем случае ngx-translate) за пределами сетки для выполнения перевода. Если совпадений не найдено, должно быть возвращено значение по умолчанию (английское значение для сетки, язык по умолчанию для сеток).

this.gridOptions = {
  localeTextFunc: (key: string, defaultValue: string) => {
    // look the value up. using the ngx translate service
    const data = this.translate.instant(key);
    return data === key ? defaultValue : data;
  }
};

Введите TranslateService as translate из '@ ngx-translate / core', чтобы использовать синхронный метод translate.instant(). Но убедитесь, что переводы были загружены, прежде чем вызывать мгновенный метод.

...