2017-12-25 25 views
1

Uncaught Error: Type FileValueAccessor is part of the declarations of 2 modules: moduleX and moduleY Please consider moving FileValueAccessor to a higher module that imports moduleX and moduleY. You can also create a new NgModule that exports and includes FileValueAccessor then import that NgModule in moduleX and moduleY.두 개의 다른 모듈에서 Filevalidation 지시문 선언이 작동하지 않습니다.

FileValueAccessor를 선언하고 app.module의 두 모듈을 선언하면 다른 템플릿 오류가 발생합니다.

ERROR DOMException: Failed to set the 'value' property on 'HTMLInputElement': This input element accepts a filename, which may only be programmatically set to the empty string.

다른 모듈에서 파일 유효성 검사를 사용하는 구성 요소를 선언하면 app.module에서 작동합니다.

왜 app.module에서 해당 구성 요소를 선언해야합니까? 이미 나는 두 개의 서로 다른 모듈을 가지고 있는데,이 모듈은 슬픈로드를 사용한다.

는 모두 모듈에서 가져 오기 내보내기 구성 요소 시도했지만 너무 일을 할 :(

답변

4

To solve this problem "Type FileValueAccessor is part of the declarations of 2 modules"

우리는 공유 만들 필요가/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 { } 

을 그리고이 공유 가져옵니다. module.ts 파일을 moduleX 및 moduleY에 추가하면 문제가 해결됩니다.