Реализовать пользовательский компонент

Реализовать валидацию во внешнем пользовательском компоненте
Средний

Пример реализован для приложения версии 8.0.3 и выше.

Пример. На странице записи пользовательского раздела [ Requests ] добавить валидатор, который проверяет, что поле заполнено. Поле реализовано с использованием внешнего пользовательского компонента на фреймворке Angular.

1. Реализовать внешний пользовательский компонент 

Чтобы реализовать внешний пользовательский компонент, воспользуйтесь инструкцией, которая приведена в статье Реализовать внешний пользовательский компонент.

2. Реализовать поле ввода 

Чтобы реализовать поле ввода, воспользуйтесь инструкцией, которая приведена в статье Реализовать бизнес-логику внешнего пользовательского компонента.

3. Реализовать валидацию поля ввода 

  1. В компоненте получите признак валидности связанного атрибута.

    1. Перейдите в файл input.component.ts.
    2. В компонент импортируйте функциональность декоратора CrtValidationInfo из библиотеки @creatio-devkit/common.
    3. В класс компонента InputComponent добавьте свойство valueValidationInfo, которое отображает информацию о невалидности связанного атрибута.
    4. Свойство valueValidationInfo отметьте декораторами Input и CrtValidationInput.
    5. Сохраните файл.
    Файл input.component.ts
    Код скопирован
    /* Импорт функциональности декораторов из библиотеки @angular/core. */
    import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';
    /* Импорт функциональности декораторов из библиотеки @creatio-devkit/common. */
    import { CrtInput, CrtOutput, CrtValidationInfo, CrtValidationInput, CrtViewElement } from '@creatio-devkit/common';
    ...
    export class InputComponent implements OnInit {
      ...
      /* Добавляем декораторы к свойству valueValidationInfo. */
      @Input()
      @CrtValidationInput()
      /* Отображает информацию о невалидности значения в поле ввода. */ 
      public valueValidationInfo!: CrtValidationInfo;
      ...
    }
    Полный исходный код файла input.component.ts
  2. В файл input.component.html добавьте разметку пользовательского компонента, если значение поля невалидно.

    Файл input.component.html
    Код скопирован
    <div class="wrapper">
        <label class="label">{{label}}</label>
        <input
            ...
            [class.invalid]="
            valueValidationInfo &&
            !valueValidationInfo.valid && valueValidationInfo.touched
            "
            ...
        />
    </div>
    Полный исходный код файла input.component.html
  3. В файл input.component.scss добавьте стили пользовательского компонента.

    Файл input.component.scss
    Код скопирован
    .wrapper {
        ...
        .input.invalid {
            background-color: #FDD8CF;
        }
    }
    Полный исходный код файла input.component.scss
  4. Выполните сборку проекта. Для этого в терминале командной строки Microsoft Visual Studio Code выполните команду npm run build.

В результате в каталог dist Angular-проекта будет добавлена сборка с именем sdk_remote_module_package.

Результат выполнения примера 

Чтобы посмотреть результат выполнения примера:

  1. Перейдите на страницу приложения Requests и нажмите [ Запустить приложение ] ([ Run app ]).
  2. На панели инструментов приложения Requests нажмите [ Добавить ] ([ New ]).
  3. В поле [ Название ] ([ Name ]) введите значение "Test".
  4. Удалите значение в пользовательском поле.

В результате выполнения примера на странице заявки отображается пользовательское поле. Название и значение пользовательского поля и поля [ Название ] ([ Name ]) совпадают. Поле реализовано с использованием внешнего пользовательского компонента на фреймворке Angular.

Далее вы можете переходить к добавлению внешнего пользовательского компонента в библиотеку Freedom UI дизайнера. Подробнее читайте в статье Добавить внешний пользовательский компонент в библиотеку Freedom UI дизайнера.