【问题标题】:Filevalidation directive declaration not working in two different module文件验证指令声明在两个不同的模块中不起作用
【发布时间】:2017-12-25 12:52:14
【问题描述】:

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

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

ERROR DOMException: 无法设置 'value' 属性 'HTMLInputElement':这个输入元素接受一个文件名,它可以 只能以编程方式设置为空字符串。

如果我声明在不同模块中使用文件验证的组件,则它适用于 app.module。

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

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

【问题讨论】:

    标签: angular angular4-forms


    【解决方案1】:

    为了解决这个问题“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。这将解决问题。

    【讨论】:

      猜你喜欢
      • 2017-06-27
      • 2018-01-28
      • 2013-10-06
      • 2021-04-23
      • 1970-01-01
      • 2017-05-16
      • 1970-01-01
      • 2019-03-09
      • 2017-07-07
      相关资源
      最近更新 更多