未捕获错误:类型FileValueAccessor是声明的一部分 2个模块:moduleX和moduleY请考虑 将FileValueAccessor移动到更高的导入模块 moduleX和moduleY。您也可以创建一个新的 导出并包含FileValueAccessor的NgModule然后导入它 模块X和模块Y中的NgModule。
如果我在app.module
中声明了FileValueAccessor和两个模块,那么它就会仔细阅读另一个模板错误。
错误DOMException:无法设置'值'财产 ' HTMLInputElement':此输入元素接受可能的文件名 只能以编程方式设置为空字符串。
如果我声明在不同模块中使用文件验证的组件,那就在app.module上工作。
为什么我需要在app.module中声明这些组件?我已经有两个使用延迟加载的不同模块。
尝试使用两个模块的导入导出组件,但它也想要工作:(
答案 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。这将解决问题。