Я использую ngx-dropzone-wrapper, и он импортируется только в один из моих лениво загруженных модулей (т.е. он не импортирован в мой app.module), и я хотел бы удалить его из моей сборки сервера, поскольку директива импортируетdropzone, который предназначен только для клиента.
Первоначально я думал создать фиктивный модуль с фиктивным компонентом и директивой, который использует те же селекторы и имена компонентов, и импортировать их в мой app.server.module в надежде, что онпереопределяет модуль ngx-dropzone-wrapper.
Это, однако, не работает, я просто получаю оба модуля в сборке сервера.Я предполагаю, что это потому, что ngx-dropzone-wrapper импортируется только в лениво загруженный модуль.
Просто для ясности вот мой фиктивный модуль.
@NgModule({
declarations: [DropzoneComponent, DropzoneDirective],
exports: [DropzoneComponent, DropzoneDirective],
imports: [CommonModule]
})
export class DropzoneModule {}
Даже пробовал использовать forRoot
export class DropzoneModule {
static forRoot(): ModuleWithProviders {
return {
ngModule: DropzoneModule
};
}
}
Пустой компонент
@Component({
selector: 'dropzone',
exportAs: 'ngxDropzone',
templateUrl: './dropzone.component.html',
styleUrls: ['./dropzone.component.scss']
})
export class DropzoneComponent implements OnInit {
@Input() disabled = false;
@Input() config?: any;
@Input() message = 'Click or drag files to upload';
@Input() placeholder = '';
@Input() useDropzoneClass = true;
@ViewChild(DropzoneDirective) directiveRef?: DropzoneDirective;
@Output('init') DZ_INIT = new EventEmitter<any>();
@Output('error') DZ_ERROR = new EventEmitter<any>();
@Output('success') DZ_SUCCESS = new EventEmitter<any>();
@Output('sending') DZ_SENDING = new EventEmitter<any>();
@Output('canceled') DZ_CANCELED = new EventEmitter<any>();
@Output('complete') DZ_COMPLETE = new EventEmitter<any>();
@Output('processing') DZ_PROCESSING = new EventEmitter<any>();
@Output('drop') DZ_DROP = new EventEmitter<any>();
@Output('dragStart') DZ_DRAGSTART = new EventEmitter<any>();
@Output('dragEnd') DZ_DRAGEND = new EventEmitter<any>();
@Output('dragEnter') DZ_DRAGENTER = new EventEmitter<any>();
@Output('dragOver') DZ_DRAGOVER = new EventEmitter<any>();
@Output('dragLeave') DZ_DRAGLEAVE = new EventEmitter<any>();
@Output('thumbnail') DZ_THUMBNAIL = new EventEmitter<any>();
@Output('addedFile') DZ_ADDEDFILE = new EventEmitter<any>();
@Output('removedFile') DZ_REMOVEDFILE = new EventEmitter<any>();
@Output('uploadProgress') DZ_UPLOADPROGRESS = new EventEmitter<any>();
@Output('maxFilesReached') DZ_MAXFILESREACHED = new EventEmitter<any>();
@Output('maxFilesExceeded') DZ_MAXFILESEXCEEDED = new EventEmitter<any>();
@Output('successMultiple') DZ_SUCCESSMULTIPLE = new EventEmitter<any>();
@Output('sendingMultiple') DZ_SENDINGMULTIPLE = new EventEmitter<any>();
@Output('canceledMultiple') DZ_CANCELEDMULTIPLE = new EventEmitter<any>();
@Output('completeMultiple') DZ_COMPLETEMULTIPLE = new EventEmitter<any>();
@Output('processingMultiple') DZ_PROCESSINGMULTIPLE = new EventEmitter<any>();
@Output('reset') DZ_RESET = new EventEmitter<any>();
@Output('queueComplete') DZ_QUEUECOMPLETE = new EventEmitter<any>();
@Output('totalUploadProgress') DZ_TOTALUPLOADPROGRESS = new EventEmitter<
any
>();
constructor() {}
ngOnInit() {}
}
Пустой указатель
@Directive({
selector: '[dropzone]'
})
export class DropzoneDirective {
@Input() disabled = false;
@Input('dropzone') config?: any;
@Output('init') DZ_INIT = new EventEmitter<any>();
@Output('error') DZ_ERROR = new EventEmitter<any>();
@Output('success') DZ_SUCCESS = new EventEmitter<any>();
@Output('sending') DZ_SENDING = new EventEmitter<any>();
@Output('canceled') DZ_CANCELED = new EventEmitter<any>();
@Output('complete') DZ_COMPLETE = new EventEmitter<any>();
@Output('processing') DZ_PROCESSING = new EventEmitter<any>();
@Output('drop') DZ_DROP = new EventEmitter<any>();
@Output('dragStart') DZ_DRAGSTART = new EventEmitter<any>();
@Output('dragEnd') DZ_DRAGEND = new EventEmitter<any>();
@Output('dragEnter') DZ_DRAGENTER = new EventEmitter<any>();
@Output('dragOver') DZ_DRAGOVER = new EventEmitter<any>();
@Output('dragLeave') DZ_DRAGLEAVE = new EventEmitter<any>();
@Output('thumbnail') DZ_THUMBNAIL = new EventEmitter<any>();
@Output('addedFile') DZ_ADDEDFILE = new EventEmitter<any>();
@Output('removedFile') DZ_REMOVEDFILE = new EventEmitter<any>();
@Output('uploadProgress') DZ_UPLOADPROGRESS = new EventEmitter<any>();
@Output('maxFilesReached') DZ_MAXFILESREACHED = new EventEmitter<any>();
@Output('maxFilesExceeded') DZ_MAXFILESEXCEEDED = new EventEmitter<any>();
@Output('successMultiple') DZ_SUCCESSMULTIPLE = new EventEmitter<any>();
@Output('sendingMultiple') DZ_SENDINGMULTIPLE = new EventEmitter<any>();
@Output('canceledMultiple') DZ_CANCELEDMULTIPLE = new EventEmitter<any>();
@Output('completeMultiple') DZ_COMPLETEMULTIPLE = new EventEmitter<any>();
@Output('processingMultiple') DZ_PROCESSINGMULTIPLE = new EventEmitter<any>();
@Output('reset') DZ_RESET = new EventEmitter<any>();
@Output('queueComplete') DZ_QUEUECOMPLETE = new EventEmitter<any>();
@Output('totalUploadProgress') DZ_TOTALUPLOADPROGRESS = new EventEmitter<
any
>();
constructor() {}
}