Filevalidation指令声明不在两个不同的模块中工作

时间:2017-12-25 12:52:14

标签: angular angular4-forms

  

未捕获错误:类型FileValueAccessor是声明的一部分   2个模块:moduleX和moduleY请考虑   将FileValueAccessor移动到更高的导入模块   moduleX和moduleY。您也可以创建一个新的   导出并包含FileValueAccessor的NgModule然后导入它   模块X和模块Y中的NgModule。

如果我在app.module中声明了FileValueAccessor和两个模块,那么它就会仔细阅读另一个模板错误。

  

错误DOMException:无法设置'值'财产   ' HTMLInputElement':此输入元素接受可能的文件名   只能以编程方式设置为空字符串。

如果我声明在不同模块中使用文件验证的组件,那就在app.module上工作。

为什么我需要在app.module中声明这些组件?我已经有两个使用延迟加载的不同模块。

尝试使用两个模块的导入导出组件,但它也想要工作:(

1 个答案:

答案 0 :(得分:4)

  

要解决此问题,“Type FileValueAccessor是其中的一部分   2个模块的声明“

我们需要创建shared / Shared.module.ts

import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
import { HttpModule } from '@angular/http';

import { FileValueAccessor } from './validation/file-control-value-accessor';
import { FileValidator } from './validation/file-input.validator';

@NgModule({
  imports: [
    BrowserModule,
    FormsModule,
    ReactiveFormsModule,
    HttpModule
  ],
  exports: [
    BrowserModule,
    FormsModule,
    ReactiveFormsModule,
    HttpModule,
    FileValueAccessor,
    FileValidator
  ],
  declarations: [
    FileValueAccessor,
    FileValidator
  ],
  providers: [
  ]
})
export class SharedModule { }

并将此shared.module.ts文件导入moduleX和moduleY。这将解决问题。