导出Angular反应形式的验证器

时间:2020-09-08 08:36:29

标签: angular typescript angular-reactive-forms angular-custom-validators

我正在尝试创建一个ValidatorFn,它将在代表自定义反应形式控件的多个组件中使用。我最初的想法是生成一个TypeScript类,在此处创建一个公共静态函数(或几个),然后像下面这样使用它:myFGroup.setValidators(ReactiveValidators.myValidator)

问题是,尽管我将这个ReactiveValidators类导入到 app.module 中,并将其添加到declarations: []中,但仍然收到我最喜欢的错误:

错误TS2307:找不到模块'src / app / validators / reactive-validators'

有人可以告诉我我做错了什么吗?而且,这种方法根本不是一种好方法吗?

2 个答案:

答案 0 :(得分:1)

ValidatorFun只是一个函数,不需要在任何类中。您只需使用导出的Validator函数创建一个ts文件。

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

您可以像这样导入它们 import { myValidator, myOtherValidator } from '../mypath/reactive-validators'; 要么 import * as ReactiveValidators from '../mypath/reactive-validators';

不需要模块导入

答案 1 :(得分:0)

根据@dzenesiz他发现了问题,问题出在导入语法中。

正确的导入语句是import

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

注意相对路径。并且,由于某种原因,VS Code自动导入使用绝对路径,即错误消息中的绝对路径。我固定了路径,现在可以了

相关问题