Я использую динамический загрузчик компонентов для отображения списка компонентов с помощью * ngFor:
<div [dragula]='"bag-one"' [dragulaModel]='types'>
<div *ngFor="let component of types; let i = index">
<dcl-wrapper [type]="component" [index]="i"></dcl-wrapper>
</div>
</div>
С типами, являющимися массивом: types = [ TestAComponent, TestBComponent, TestCComponent];
В компоненте dcl-wrapper мне удалось получить доступ к индексу компонентов, но я не могу понять, как вывести имена компонентов. Я использовал этот plnkr из этот вопрос в качестве примера, если вам нужен весь код, но для соответствующего кода для этого часть выглядит так:
export class DclWrapperComponent {
@ViewChild('target', {read: ViewContainerRef}) target;
@Input() type;
@Input()
set name(component: string){
this.name = component;
}
@Input()
set index(i: number){
this._index = i;
console.log("Item index changed: ", this._index, this.name);
}
...
и я получаю:
Item index changed: 0 undefined
Item index changed: 1 undefined
Item index changed: 2 undefined
Может ли кто-нибудь объяснить, в чем я ошибаюсь? Или, если вы знаете лучший способ получить имя / идентификатор / что-то еще для перемещаемого компонента, я бы хотел его услышать.