Tips for importing formBuilder settings from a separate .ts document

This is the structure of my ComplaintCreateComponent.ts file.

import { Component, OnInit } from '@angular/core';
import { FormBuilder, Validators } from '@angular/forms';

...

export class ComplaintCreateComponent implements OnInit {

  public ComplaintForm = this.formBuilder.group({
    ComplaintID: ['', [Validators.required]],
    FileNo: ['', [Validators.required]],
    ComplaintName: ['', Validators.required],
  })
  
  constructor(private formBuilder: FormBuilder) { }

  ngOnInit(): void {}

  onSubmit() {
    console.log(this.ComplaintForm);
  }

}

I want to move these options into a separate .ts file and import it in the this.formBuilder.group settings.

{
       ComplaintID: ['', [Validators.required]],
       FileNo: ['', [Validators.required]],
       ComplaintName: ['', Validators.required],
}

Answer №1

To easily reuse a variable in multiple files, you can export it and then import it wherever needed:

my-form.ts

import { Validators } from '@angular/forms';

export const complaintForm = {
  ComplaintID: ['', [Validators.required]],
  FileNo: ['', [Validators.required]],
  ComplaintName: ['', Validators.required],
}

ComplaintCreateComponent.ts

import { FormBuilder} from '@angular/forms';
import { myForm } from './complaintForm';

export class ComplaintCreateComponent {

  public ComplaintForm = this.formBuilder.group(myForm)
  
  constructor(private formBuilder: FormBuilder) { }
}

Similar questions

If you have not found the answer to your question or you are interested in this topic, then look at other similar questions below or use the search

The TypeError encountered in an Ionic pipe states that the property 'toString' cannot be read as it is undefined

I have a news application built in Ionic 4. The pubDate property of the UutinenPage class is being asynchronously assigned a value of data.items[this.id].pubDate in the uutinen.page.ts file. The expected format of this value is something like 2019-02-19 04 ...

When additional lines are drawn elsewhere on the HTML5 Canvas, the diagonal lines will gradually appear thicker and more pronounced

For horizontal and vertical lines, using a translation of 0.5 for odd stroke widths results in crisper and sharper lines. But what about diagonal lines? Link to jsfiddle <!DOCTYPE html> <html lang="en"> <body style="background: black"& ...

Navigating the node and npm ecosystems for importing paths

I am currently working with an NPM module that utilizes another local NPM module which contains shared code. Both of these modules are not public, they are only used locally. In my package.json file, I include the shared module like this: "my-shared": " ...

My eslint quote rules seem to be disregarded by Visual Studio Code

I am facing an issue with Visual Studio Code not following my eslint rules for my typescript project, particularly with quoting. More information about the configurations of my project can be found here: Typescript: Why doesn't Visual Studio Code repo ...

The devastation caused by typing errors in TypeScript

I have a preference: const settings = { theme: "light", }; and feature: const Feature = ({ setting }: Props) => ( <FeatureBlock> <FeatureValue scale="large" size={20}> {setting.theme} </Styled.FeatureValue> ...

Changing the value of a property in an object based on the object's attribute in JavaScript

I have a JSON data set like this: inputData = [ { id : 179849, name : alex , lastname: sanchez}, { id : 788539, name : Paul, lastname: bearer}, { id : 282169, name : Jean, lastname: nobel}, ... { id : 632785, name : Maria, lastname: parak} ] I am looking ...

Understanding Typescript event handling in React

Encountering issues when attempting to build my React/Typescript app using the MouseEvent type in an event handler: private ButtonClickHandler(event: MouseEvent): void { ... } The error message received is as follows: error TS2322: Type '{ onCl ...

typescript - transforming text into numerical values

newbalance = (Number(this.balance)) + (Number(this.pastAmount)); The result for my newbalance calculation is coming back as undefined, even though this.balance is 34 and this.pastAmount is 23. I've set this up in the controller and I'm trying t ...

What is the best way to retrieve a data type from an array using typescript?

Can Typescript automatically declare a type that retrieves the inner type of an array? For instance: Assume the following code snippet already exists: export interface Cache { events: Event[], users: User[] } type CacheType = Event[] | User[]; ...

The behavior of TypeScript class inheritance differs from that of its ES6 equivalent

I'm currently developing a custom error handling middleware for my node.js project using express and TypeScript. One key component of this middleware is the AppError class, which extends the built-in Error class. The code for this class is as follows: ...

Invoke the API when the value of a property in the SPFX property pane is modified

Here's a question that might sound silly, but I'll ask anyway. I have a dropdown field in my Property pane that is filled with all the lists from the current site. It's working fine. When I change the dropdown selection, it populates a pro ...

Setting an initial value for an @Output EventEmitter in Angular 6 is a breeze

I'm working on a component that includes a dropdown selection menu. <p style="padding: 5px"> <select [(ngModel)]='thisDD' name="nameDD" id="idDD" (ngModelChange)="updateDD(thisDD)" class="form-control"> <o ...

Combine objects by selecting attributes from multiple objects

declare type A = {type: 'TypeA', attr1: string} declare type B = {type: 'TypeB', attr2: string} declare type U = A | B When I use type X = Pick<U, 'type'>, I get: { type: 'TypeA' | 'TypeB' } But I a ...

Testing the NestJS service with a real database comparison

I'm looking to test my Nest service using a real database, rather than just a mock object. While I understand that most unit tests should use mocks, there are times when testing against the actual database is more appropriate. After scouring through ...

Electron and React: Alert - Exceeded MaxListenersWarning: Potential memory leak detected in EventEmitter. [EventEmitter] has 21 updateDeviceList listeners added to it

I've been tirelessly searching to understand the root cause of this issue, and I believe I'm getting closer to unraveling the mystery. My method involves using USB detection to track the connection of USB devices: usbDetect.on('add', () ...

Verify the type without making any assumptions about the checked type

Take a look at this type definition: interface ISmth<T> { id: number; data: T; } Now, I am interested in creating an array that contains elements of this type: var a = [{ id: 1, data: [], }, { id: 2, data: 4, }, { id: 3, data: "abc ...

How to Validate Ionic 2 Radio Button Selections with TypeScript

Imagine having a list like the one shown below: <ion-list radio-group [(ngModel)]="autoManufacturers"> <ion-list-header> Auto Manufacturers </ion-list-header> <ion-item> <ion-label>Cord</ion-label> &l ...

What is the rationale behind permitting interface method implementations to have varying intersection type arguments?

The interface and implementation presented here are quite straightforward: class Transform { X: number = 0 Y: number = 0 } class RenderData { Model: object | null = null } interface System { Update(e: Transform & RenderData): void } class Ren ...

What impact does control flow have on narrowing variable types?

Having reviewed this particular question, my current focus is on understanding how variables can be narrowed down using control flow. An example: type T1 = { a?: { b: string } } const t1: T1 = {} t1.a.b // displays error, possibly undefined t1.a ...

What is the best way to access a property within a typescript object?

I'm working with the following code snippet: handleSubmit() { let search = new ProductSearch(); search = this.profileForm.value; console.log(search); console.log(search.code); } When I run the console.log(search) line, it outputs: ...