16.2.1 โ€ข Published 9 months ago

form-service-dynamic v16.2.1

Weekly downloads
-
License
MIT
Repository
github
Last release
9 months ago

GitHub top language GitHub code size in bytes GitHub issues GitHub closed issues GitHub contributors GitHub npm Website

Installation

You can install the FormServiceDynamic package using npm:

npm install form-service-dynamic --save

Use in your component

import {Component, OnInit} from '@angular/core';
import {FormBuilder, FormGroup} from '@angular/forms';
import {FormServiceDynamic} from 'form-service-dynamic';

interface Person {
  name: string;
  age: number | null;
  phones: Phone[];
}

interface Phone {
  number: string | null;
  description: string | null;
  types: string[];
}

@Component({
  selector: 'app-your-component',
  templateUrl: './your-component.component.html',
  styleUrls: ['./your-component.component.css']
})
export class YourComponent implements OnInit {
  personForm!: FormGroup;

  constructor(private formService: FormServiceDynamic) {
  }

  ngOnInit(): void {
    this.createForm();
  }

  private createForm(): void {
    const person: Person = {
      name: '',
      age: null,
      phones: []
    };
    this.personForm = this.formService.createForm(person);
  }
}

Usage in Service

  1. Import the necessary classes and interfaces from the @angular/forms module and the form-service package:
import {
  FormBuilder,
  FormGroup,
  FormControl,
  Validators,
  ValidatorFn,
  AsyncValidatorFn,
  AbstractControl
} from '@angular/forms';
import {FormServiceDynamic, FieldConfig} from 'form-service-dynamic';
  1. Create an instance of FormServiceDynamic by injecting FormBuilder:
@Injectable({
  providedIn: 'root'
})
export class YourFormService extends FormServiceDynamic {
  constructor(private formBuilder: FormBuilder) {
    super(formBuilder);
  }

  // Your custom form creation methods can go here
}
  1. Define your form configuration using the CampoConfig interface:
interface Phone {
  number: string | null;
  description: string | null;
  types: string[];
}

interface Person {
  name: string | null;
  age: number | null;
  phones: Phone[];
}

const phone: Phone = {
  number: '',
  description: '',
  types: []
};

const person: Person = {
  name: '',
  age: null,
  phones: [phone]
};
  1. Use the createForm method from FormServiceDynamic to generate the form:
const options: { [field: string]: CampoConfig } = {
  name: {value: '', validations: {required: true}},
  age: {value: null, validations: {required: true, min: 18}},
  phones: {value: [], validations: {required: true}}
};

const personForm: FormGroup = this.createForm(person, options);
  1. Use the generated form in your component template:
<form [formGroup]="personForm">
  <label for="name">Name:</label>
  <input type="text" id="name" formControlName="name">
  <!-- More form controls for other fields... -->
</form>
  1. Custom Validators
const options: { [field: string]: CampoConfig } = {
  name: {
    value: '',
    customValidation: (control: AbstractControl) => {
      if (control.value && control.value.toLowerCase() === 'admin') {
        return {forbiddenName: true};
      }
      return null;
    }
  },
// Other fields...
};

Help improve

Found a bug or a problem? Open a new issue GitHub.

Contributing to this project

GitHub

Author

@JeanPaul โ€“ jeanpaulwebb@gmail.com

GitHub contributors

License This project is licensed under the MIT License - see the LICENSE file for details.

Come and contribute to this library, I'm waiting for you ๐Ÿ˜

About library for contributors

This library was generated with version 16.2.0.

Code scaffolding

Run ng generate component component-name --project form-service-dynamic to generate a new component. You can also use ng generate directive|pipe|service|class|guard|interface|enum|module --project form-service-dynamic.

Note: Don't forget to add --project form-service-dynamic or else it will be added to the default project in your angular.json file.

Build

Run ng build form-service-dynamic to build the project. The build artifacts will be stored in the dist/ directory.

Publishing

After building your library with ng build form-service-dynamic, go to the dist folder cd dist/form-service-dynamic and run npm publish.

Obs: All version publications will be made by me, after approval by your MR

Running unit tests

Run ng test form-service-dynamic to execute the unit tests via Karma.

16.2.1

9 months ago

1.0.109

9 months ago

1.0.108

9 months ago

1.0.106

9 months ago

1.0.105

9 months ago

1.0.102

9 months ago

1.0.101

9 months ago

1.0.100

9 months ago

1.0.72

9 months ago

1.0.71

9 months ago

1.0.70

9 months ago

1.0.69

9 months ago

1.0.67

9 months ago

1.0.66

9 months ago

1.0.65

9 months ago

1.0.64

9 months ago

1.0.63

9 months ago

1.0.59

9 months ago

1.0.58

9 months ago

1.0.57

9 months ago

1.0.56

9 months ago

1.0.55

9 months ago

1.0.54

9 months ago

1.0.53

9 months ago

1.0.51

9 months ago

1.0.50

9 months ago

1.0.49

9 months ago

1.0.47

9 months ago

1.0.46

9 months ago

1.0.45

9 months ago

1.0.44

9 months ago

1.0.42

9 months ago

1.0.41

9 months ago

1.0.40

9 months ago

1.0.39

9 months ago

1.0.37

9 months ago

1.0.36

9 months ago

1.0.34

9 months ago

1.0.33

9 months ago

1.0.32

9 months ago

1.0.31

9 months ago

1.0.30

9 months ago

1.0.29

9 months ago

1.0.28

9 months ago

1.0.27

9 months ago

1.0.26

9 months ago

1.0.25

9 months ago

1.0.24

9 months ago

1.0.22

9 months ago

1.0.21

9 months ago

1.0.20

9 months ago

1.0.19

9 months ago

1.0.18

9 months ago

1.0.17

9 months ago

1.0.16

9 months ago

1.0.15

9 months ago

1.0.14

9 months ago

1.0.13

9 months ago

1.0.12

9 months ago

1.0.11

9 months ago

1.0.10

9 months ago

1.0.9

9 months ago

1.0.8

9 months ago

1.0.6

9 months ago

1.0.4

9 months ago

1.0.2

9 months ago

1.0.1

9 months ago

1.0.0

9 months ago