Средство выбора даты Kendo для angular не переводит сообщения в сетке кендо - PullRequest
0 голосов
/ 07 апреля 2020

Проблема, с которой я столкнулся, заключается в том, что при реализации внутри ячейки Kendo Grid средство выбора даты остается с сообщениями по умолчанию для текстов «сегодня» и «переключение» на английском языке sh, тогда как все остальные тексты (месяцы и дни) кажется, что переведено правильно, с импортированным IntlModule и предоставленным LOCALE_ID. Это мой html:

<kendo-grid-column field="endDate"
        title="{{ 'time.finalDate' | translate: { min: 'no' } }}"
        filter="date"
        editor="date"
        format="{0:dd/MM/yyyy}">
        <ng-template kendoGridCellTemplate let-dataItem let-filter let-column="column">
            {{ dataItem.endDate | dateLocalized }}
        </ng-template>
        <ng-template KendoGridEditTemplate
            let-dataItem="dataItem"
            let-column="column"
            let-formGroup="formGroup">
            <kendo-datepicker ngDefaultControl
                #datepicker
                [format]="'dd/MM/yyyy'"
                [value]="dataItem[column.field]"
                [formControl]="formGroup?.controls[column.field]">
                <kendo-datepicker-messages today="Hoy"
                    toggle="Cambiar calendario">
                </kendo-datepicker-messages>
            </kendo-datepicker>
        </ng-template>
    </kendo-grid-column>

И мой модуль:

import { NgModule, LOCALE_ID } from '@angular/core';
import { CurrencyExchangeComponent } from './components/currency-exchange.component';
import { IntlModule } from '@progress/kendo-angular-intl';
import { DateInputsModule } from '@progress/kendo-angular-dateinputs';

@NgModule({
  declarations: [CurrencyExchangeComponent],
  imports: [
    IntlModule,
    DateInputsModule
  ],
  providers: [
    { provide: LOCALE_ID, useValue: 'es-ES' }
  ],
  exports: [CurrencyExchangeComponent]
})
export class CurrencyExchangeModule { }

Я также пробовал его вне сетки в форме, и, кажется, работает, переводя все, но внутри сетки сообщения кендо-datepicker, похоже, не работают. Кто-нибудь может помочь?

1 Ответ

0 голосов
/ 08 апреля 2020

Что ж, похоже, я нашел ответ на вопрос «почему», но я все еще не знаю, как это исправить. Выбор даты у меня есть в KendoGridEditTemplate. Это потому, что у меня есть свойство editor = "date" в kendo-grid-column . Таким образом, кажется, что он показывает внутренний редактор дат (скорее всего, сборщик дат, потому что он выглядит точно так же). И у меня нет доступа к этому, чтобы поместить кендо-datepicker-сообщения html с переводом этих полей. Я пытался удалить editor = "date" из столбца, но тогда он вообще не отображает никакой указатель даты (кажется, что KendoGridEditTemplate не работает с указателем даты внутри).

Еще одна ошибка I´ мы заметили, что в Grid средство выбора даты (editor = "date") работает хорошо и сохраняет в форме ControlControl допустимая дата , но если в обычной formGrroup - когда всплывающее окно не используется, и значение вводится вручную - оно возвращает простую строку в formControl, что вызывает проблемы при синтаксическом анализе его для действительного JavaScript экземпляра даты, чтобы сохранить его на сервере как date (когда формат dd / mm / yyyy , анализ не очень хорошо работает с датами, такими как 04/11/2020, потому что он анализирует его, как если бы он был в формате mm / dd / yyyy).

Итак, мой исправленный html следующий (нет необходимости в KendoGridEditTemplate):

<kendo-grid-column field="endDate"
    title="{{ 'time.finalDate' | translate: { min: 'no' } }}"
    filter="date"
    editor="date"
    format="{0:dd/MM/yyyy}">
    <ng-template kendoGridCellTemplate let-dataItem let-filter let-column="column">
        {{ dataItem.endDate | dateLocalized }}
    </ng-template>
</kendo-grid-column>
...