typescript Angular 5:找不到模块:错误:无法解析“@angular/forms/src/validators”

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/48294516/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-10-21 05:10:38  来源:igfitidea点击:

Angular 5: Module not found: Error: Can't resolve '@angular/forms/src/validators'

angulartypescriptangular-directivecustomvalidatorangular-validation

提问by Abhishek

I am trying to create a custom validator using directive but getting below error.

我正在尝试使用指令创建自定义验证器,但出现以下错误。

ERROR in ./src/app/CustomValidators/white-space-validator.directive.ts
Module not found: Error: Can't resolve '@angular/forms/src/validators' in 'D:\Angular\Admin\src\app\CustomValidators'
resolve '@angular/forms/src/validators' in 'D:\Angular\Admin\src\app\CustomValidators'
  Parsed request is a module
  using description file: D:\Angular\Admin\package.json (relative path: ./src/app/CustomValidators)
    Field 'browser' doesn't contain a valid alias configuration
  after using description file: D:\Angular\Admin\package.json (relative path: ./src/app/CustomValidators)
    resolve as module.....

Code in directive file:

指令文件中的代码:

import { Directive } from '@angular/core';
import { ValidatorFn, Validator } from '@angular/forms/src/directives/validators';
import { AbstractControl, FormControl } from '@angular/forms/src/model';
import { NG_VALIDATORS } from '@angular/forms/src/validators';

@Directive({
  selector: '[whiteSpace][ngModel]',
  providers: [
    { provide: NG_VALIDATORS, useExisting: WhiteSpaceValidatorDirective, multi: true }
  ]
})

export class WhiteSpaceValidatorDirective  {
  validator : ValidatorFn;

  constructor() { 
    this.validator = checkWhiteSpaces();
  }

  validate(c: FormControl){
    return this.validator(c);
  }
}

function checkWhiteSpaces(): ValidatorFn {
  return (c: AbstractControl) => {
    let isValid = c.value.trim().length > 0 ? true : false;
    if (isValid) {
      return null;
    }
    else {
      return {
        whiteSpace: { valid: false }
      }
    }
  }
}

Versions of Package I am using:

我正在使用的软件包版本:

  • Angular CLI: 1.5.5 Node: 8.2.1 OS: win32 x64 Angular: 5.1.2 ... animations, common, compiler, compiler-cli, core, forms ... http,
    language-service, platform-browser ... platform-browser-dynamic,
    router @angular/cli: 1.5.5 @angular-devkit/build-optimizer: 0.0.36 @angular-devkit/core: 0.0.22 @angular-devkit/schematics: 0.0.42
    @ngtools/json-schema: 1.1.0 @ngtools/webpack: 1.8.5
    @schematics/angular: 0.1.11 @schematics/schematics: 0.0.11
    typescript: 2.4.2 webpack: 3.8.1
  • Angular CLI:1.5.5 节点:8.2.1 操作系统:win32 x64 Angular:5.1.2 ... 动画、通用、编译器、编译器 cli、核心、表单 ... http、
    语言服务、平台浏览器 .. . 平台浏览器动态,
    路由器 @angular/cli: 1.5.5 @angular-devkit/build-optimizer: 0.0.36 @angular-devkit/core: 0.0.22 @angular-devkit/schematics: 0.0.42
    @ngtools /json-schema: 1.1.0 @ngtools/webpack: 1.8.5
    @schematics/angular: 0.1.11 @schematics/schematics: 0.0.11 typescript
    : 2.4.2 webpack: 3.8.1

Any help ?

有什么帮助吗?

回答by Suren Srapyan

Import just from @angular/forms

仅从进口 @angular/forms

import { 
      ValidatorFn,
      Validator, 
      AbstractControl, 
      FormControl, 
      NG_VALIDATORS 
} from '@angular/forms';