Angular Filevalidation指令声明在两个不同的模块中不起作用

Angular Filevalidation指令声明在两个不同的模块中不起作用,angular,angular4-forms,Angular,Angular4 Forms,未捕获错误:类型FileValueAccessor是的声明的一部分 模块2:模块化和模块化 将FileValueAccessor移动到导入的更高模块 moduleX和moduleY。您还可以创建一个新的 导出并包含FileValueAccessor的模块,然后导入该模块 moduleX和moduleY中的NgModule 如果我在app.module中声明了FileValueAccessor和这两个模块,那么它正在阅读另一个模板错误 错误DOMEException:未能在上设置“值”属性 “HT

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

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

错误DOMEException:未能在上设置“值”属性 “HTMLInputElement”:此输入元素接受文件名,该文件名可能 只能以编程方式设置为空字符串

若我在不同的模块中声明使用文件验证的组件,那个么这就是app.module上的工作

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

尝试从两个模块导入导出组件,但它也需要工作:(

要解决此问题,“类型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。这将解决此问题