angularjs - 动态地将 Angular2 组件附加到 dom

标签 angularjs angular

我希望能够单击按钮来添加新组件。例如,如果 Angular 2 更像 Angular 1,我可以这样做:

<button (click)="addComponent()">add</button>

ts:

addComponent():void { 
    let component =  $compile('<component-selector></component-selector>')(scope)
    ele.append(component)
}

注意:我知道类似的问题已经在这里被问过几次,但我读到的答案是矛盾的,并且主要依赖于已弃用的代码,例如 DynamicComponentLoader。我在官方文档中找不到任何相关内容,并且理想情况下希望找到一种标准化的方法来执行此操作。

最佳答案

没有。 Angular 2 与 Angular 1 非常相似,而在 Angular 1 中这样做从来都不是操作 DOM 的推荐方式。

推荐的方法是修改模型,并使用模板从模型生成 HTML:

private components = [];

addComponent() {
    this.components.push({}); // this object would typically contain the inputs of the component
}

在模板中:

<component-selector *ngFor="let c of components"></component-selector>

关于angularjs - 动态地将 Angular2 组件附加到 dom,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40548914/

相关文章:

javascript - 单元测试,如何检查 $uibModal 的模板是否存在

javascript - PhoneGap 上 Angularjs/Javascript 应用程序的最佳数据持久性?

node.js - npm ci 在 Windows : node-gyp rebuild 上输出 Angular 8 和 Node 12 的错误

html - 轮播 slider 在 Angular4 中显示单个项目

angular - 实现 ngx-gallery 时无法读取未定义的属性 'replace'

angular - Angular 中的 ng-bind 等价物

angular - NPM IOS模拟器无法获取应用程序路径

javascript - 如何使用另一个文本区域编辑文本区域值?

javascript - 有多少项目就重复 .then()

javascript - Angular ng-show 在简单的示例脚本中没有按预期工作