Как использовать DynamicModule.withComponents из ng-dynamic-component без создания зависимости для этих компонентов?

У меня есть 3 модуля с компонентом в каждом:

tasks
  >tasks
    -tasks.component.ts|html|css
  -tasks.module.ts

people
  >people
    -people.component.ts|html|css
  -people.module.ts

dynamic-container
  >dynamic-container
    -dynamic-container.component.ts|html|css
  -dynamic-container.module.ts

и я использую пакет ng-dynamic-component для постановки задач, люди а в будущем некоторые другие компоненты будут динамически перемещаться в DynamicContainerComponent.

динамический-контейнер.html

<div *ngFor="let dynComponent of dynComponents()">
   <ndc-dynamic [ndcDynamicComponent]="dynComponent.component">
   </ndc-dynamic>
</div>

массив dynComponents выглядит так:

public dynComponents: ITabComponent[] = [
   { name: 'Tasks', icon: 'tasks', component: TasksComponent },
   { name: 'People', icon: 'people', component: PeopleComponent }
];

Теперь это уже создает зависимость от TasksModule и PeopleModule, но, кроме того, DynamicContainerModule выглядит так:

@NgModule({
  declarations: [DynamicContainerComponent],
  imports: [
    CommonModule,
    TasksModule,
    PeopleModule,
    DynamicModule.withComponents([TasksComponent, PeopleComponent])
  ],
  exports: [DynamicContainerComponent]
})
export class DynamicContainerModule { }

Итак, как мне удалить эти зависимости и сделать DynamicContainerComponent действительно динамичным? Думаю, я мог бы создать дополнительный модуль, который зависит от приложения и который возвращает массив dynComponents (я не знаю, как это сделать правильно), но часть DynamicModule.withComponents еще сложнее.


person char m    schedule 29.08.2019    source источник
comment
Надеюсь, эта статья вам поможет. blog.angularindepth.com/   -  person Hsuan Lee    schedule 06.09.2019


Ответы (1)


Вы можете использовать динамический загрузчик компонентов вместо ng-dynamic-components.

Вы также можете загрузить и удалить компонент в зависимости от условий. динамически загружает компонент. (Пример: сохраняется установленный тайм-аут, но вы можете вызывать функцию по условию из службы или серверной части, как хотите.)

В решении здесь вы можете узнать, как динамически удалить компонент.

person Sridhar Natuva    schedule 05.09.2019
comment
спасибо, но я прошу решение конкретной проблемы - person char m; 05.09.2019
comment
Я не знаю, было ли это возможно или нет так, как я пытался это сделать, но динамический загрузчик компонентов работает. это не так просто. Благодарность! - person char m; 24.10.2019