PrimeNG Angular, средство выбора года не работает как Reactive

я делаю что-то не так или это ошибка (средний, выбор года не работает):

      <!-- Month Control -->
      <input
        type = "month"
        view = "month" 
        dateFormat = "mm" 
      >

      <!-- Year Control -->
      <input
        type = "year"
        view = "year"
        dateFormat = "yy"
      />
      <p-calendar
        view = "year"
        dateFormat = "yy"
      />

Элемент управления МЕСЯЦ работает как средство выбора даты, нижний элемент выбора года в p-календаре работает, но средний элемент для выбора года не работает и отображается только как поле ввода текста.

Есть ли какой-то конкретный набор «типа», «представления» и т. д., который мне не хватает, возможно, я еще не пробовал? Или это действительно ошибка все еще/снова?

Я думаю, что исправление ошибки 2 года назад исправило только реактивное использование «formControlName» с «p-calendar» для выбора года, а не базовое/полное «исправление» reactive+yearpicker (https://github. com/primefaces/primeng/issues/11223)

--Версии: Угловой интерфейс командной строки: 16.2.11 Узел: 18.17.1 Менеджер пакетов: npm 9.6.7 ОС: Win32x64. пример: 16.9.1

Спасибо за совет, если я что-то пропустил или подтверждение, это должно быть отмечено как ошибка.

Проблема заключается в том, что type = "year" не является допустимым типом ввода HTML5. Вы можете проверить допустимые типы ввода HTML5 на странице веб-документов MDN Developer.mozilla.org/en-US/docs/Web/HTML/Element/input

Jaykant Jha 14.06.2024 09:01
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Angular и React для вашего проекта веб-разработки?
Angular и React для вашего проекта веб-разработки?
Когда дело доходит до веб-разработки, выбор правильного front-end фреймворка имеет решающее значение. Angular и React - два самых популярных...
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Мы провели Twitter Space, обсудив несколько проблем, связанных с последними дополнениями в Angular. Также прошла Angular Tiny Conf с 25 докладами.
Угловой продивер
Угловой продивер
Оригинал этой статьи на турецком языке. ChatGPT используется только для перевода на английский язык.
Мое недавнее углубление в Angular
Мое недавнее углубление в Angular
Недавно я провел некоторое время, изучая фреймворк Angular, и я хотел поделиться своим опытом со всеми вами. Как человек, который любит глубоко...
Освоение Observables и Subjects в Rxjs:
Освоение Observables и Subjects в Rxjs:
Давайте начнем с основ и постепенно перейдем к более продвинутым концепциям в RxJS в Angular
0
1
62
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

HTML пока не поддерживает «type=year», чтобы отображать только год. Вы можете сделать что-то свое, используя type=number и указать минимальное максимальное значение, например это, или использовать p-календарь.

Ответ принят как подходящий

Я бы рекомендовал просто использовать <p-calendar> в качестве средства выбора даты.

Если вы все еще хотите иметь специальный ввод для year, вы можете использовать шаблоны регулярных выражений для проверки ввода следующим образом.

    //.ts

    formGroup = new FormGroup({
      year: new FormControl('', {
        validators: Validators.pattern('20[0-2][0-9]'),
      }),
    });

    changedValue(): void {
      const yearInput = this.formGroup.get('year');
      const valid: boolean = yearInput?.errors ? false : true;

      console.info(valid);

      // Do stuff with the input value
    }
    //.html

    <form [formGroup] = "formGroup">
        <input formControlName = "year" (change) = "changedValue()">
    </form>

Это добавит ошибку к FormControl, если входное значение не является числом от 2000 до 2029.

Другие вопросы по теме