Исключение модуля из Angular Universal Build при импорте в ленивый модуль - PullRequest
0 голосов
/ 05 февраля 2019

Я использую 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() {}
}
...