角度2:在特定/nth位置动态添加组件



无法在特定索引处添加组件。例如,在plunker链接下方。PlunkerAddRemoveComponents

在这里,我只能在第一时间添加特定索引中的组件。

export class AddRemoveDynamic {
    idx: number = 0;
    constructor(private _dcl: DynamicComponentLoader, private _e: ElementRef) { }
    add() {
        this._dcl.loadIntoLocation(DynamicCmp, this._e, 'location').then((ref) => {
            ref.instance._ref = ref;
            ref.instance._idx = this.idx++;
        });
    }
}

我的场景是:

  • 单击"添加组件"按钮3次。它将创建3行持续
  • 然后单击第二行"添加"按钮,它将创建另一行
  • 再次单击相同的按钮,它将创建下一个组件行

问题是,我想在每次添加按钮行旁边创建组件。

DynamicComponentLoader已弃用。

我创建了一个使用ViewContainerRef.createComponent()的示例,它允许在应该添加元素的地方添加索引:

class DynamicCmp {
  _ref: ComponentRef;
  _idx: number;
  constructor(private resolver: ComponentResolver, private location:ViewContainerRef) { }
  remove() {
    this._ref.dispose();
  }
  add1() {
    this.resolver.resolveComponent(DynamicCmp).then((factory:ComponentFactory<any>) => {
      let ref = this.location.createComponent(factory, 0)
      ref.instance._ref = ref;
      ref.instance._idx = this._idx++;
    });
  }
}

Plunker示例

相关内容

  • 没有找到相关文章

最新更新