我正在尝试创建一个ValidatorFn
,它将在代表自定义反应形式控件的多个组件中使用。我最初的想法是生成一个TypeScript类,在此处创建一个公共静态函数(或几个),然后像下面这样使用它:myFGroup.setValidators(ReactiveValidators.myValidator)
。
问题是,尽管我将这个ReactiveValidators
类导入到 app.module 中,并将其添加到declarations: []
中,但仍然收到我最喜欢的错误:
错误TS2307:找不到模块'src / app / validators / reactive-validators'
有人可以告诉我我做错了什么吗?而且,这种方法根本不是一种好方法吗?
答案 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自动导入使用绝对路径,即错误消息中的绝对路径。我固定了路径,现在可以了