dzenesiz
dzenesiz

Reputation: 1542

Exporting a validator for Angular reactive form

I am trying to create a ValidatorFn that will be used in several components which represent custom reactive form controls. My initial idea was to generate a TypeScript class, create a public static function (or several) there and then just use it like so: myFGroup.setValidators(ReactiveValidators.myValidator).

The problem is, although I imported this ReactiveValidators class in the app.module and added it to declarations: [], I still get the favorite error:

error TS2307: Cannot find module 'src/app/validators/reactive-validators'

Can someone tell me what I am doing wrong? Also, is this approach even a good one at all?

Upvotes: 0

Views: 1341

Answers (2)

Kamran Khatti
Kamran Khatti

Reputation: 4127

As per @dzenesiz he figured out issue, the issue was in importing syntax.

The correct import statement is import.

{ maxInputLengthValidator } from '../../validators/reactive-validators'

Notice the relative path. And, for some reason, VS Code auto import uses absolute path, the one in the error message. I fixed the path, now it works

Upvotes: 0

MoxxiManagarm
MoxxiManagarm

Reputation: 9124

A ValidatorFun is just a function, which is not required to be in any class. You can simply create a ts file with exported Validator functions.

export const myValidator: ValidatorFn = /* ... */;
export const myOtherValidator: ValidatorFn = /* ... */;
export function myJustAnotherValidator(/* ... */) { /* ... */ }

And you can import them like import { myValidator, myOtherValidator } from '../mypath/reactive-validators'; Or import * as ReactiveValidators from '../mypath/reactive-validators';

No module import required

Upvotes: 1

Related Questions