如何让Angular2 RC1知道已更改的DOM

扬·B。

不过,实际上这是从这里衍生出来的,但使用案例要简单得多。关于如何让Angular2知道在外部添加了包含Angular指令的DOM元素。在这种情况下,我添加了一个新的单击按钮,其单击事件从未绑定。Imo我以为Zone会自动检测其组件模板中的任何更改,显然不会。有没有人能够使该代码正常工作而无需为按钮创建新组件并通过加载它的巨大开销DynamicLoaderComponent

注意:我已经添加了NgZone并且ChangeDetectorRef可以玩。都没有为我工作。

以下是在plunkr的完整示例的链接:plnkr.co/edit/hf180P6nkxXtJDusPdLb

这是该组件的相关摘录:

import {Component, AfterViewInit, ChangeDetectorRef, NgZone, Renderer} from '@angular/core'

@Component({
    selector: 'my-app',
providers: [],
template: `
<div>
<p><button on-click="clickMe()">This works</button></p>

<div id="insert-here"></div>

</div>
`,
directives: []
})
export class App implements AfterViewInit {
constructor(private ref:ChangeDetectorRef, private ngZone:NgZone, private renderer:Renderer) {

}

clickMe() {
alert("Yay, it works");
}

ngAfterViewInit() {
    let newButton = document.createElement("button");
    newButton.setAttribute("on-click","clickMe()");
    let textNode = document.createTextNode("This does not");
    newButton.appendChild(textNode);
    document.getElementById("insert-here").appendChild(newButton);

    // please make my button work:
    this.ref.detectChanges();
}

}
贡特·佐赫鲍尔(GünterZöchbauer)

Zone根本不关心DOM。区域仅修补异步API(如addEventListener(),,setTimeout()...),然后仅检查模型是否有更改。

Angular假定它负责DOM。更改模型时,Angular会更新DOM,而不是相反。

无法使Angular创建用于匹配HTML的组件或指令或解析动态添加的HTML的绑定。Angular仅对静态添加到组件模板的HTML执行此操作。

DynamicaComponentLoader(已弃用)还是ViewContainerRef.createComponent()动态添加组件的方法。

您可以使用wrapper元素,这样可以轻松地声明性地添加动态组件,如Angular 2动态选项卡中所述,并带有用户单击的选定组件(还包含新组件的Plunker示例)ViewContainerRef.createComponent()

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

卡在angular2(RC1)路由上

来自分类Dev

Angular2 RC1多级routerLink指令

来自分类Dev

卡在angular2(RC1)路由上

来自分类Dev

Angular2 RC1,如何使用ngc离线编译静态

来自分类Dev

如何将Angular2 RC1与System.js捆绑在一起

来自分类Dev

Angular2指令:如何检测DOM更改

来自分类Dev

缩小Angular 2 rc1

来自分类Dev

Angular 2 rc1中的RouteParams

来自分类Dev

Angular 2 rc1中的RouteParams

来自分类Dev

根据Angular2 rc1中的路由隐藏元素

来自分类Dev

定义但未识别的Angular2 RC1子路线

来自分类Dev

刷新页面时,angular2 rc1默认路由问题

来自分类Dev

Angular2 RC1实现加载指标的最佳方法

来自分类Dev

HashLocationStrategy在Angular2 RC1中不起作用

来自分类Dev

Angular2 rc1,在哪里是shims_for_IE

来自分类Dev

使用所有rc1软件包的angular2 npm http 404

来自分类Dev

Angular2 rc1,新路由器和传递数据

来自分类Dev

Angular2 RC1管道始终通过未定义

来自分类Dev

HTTP和嵌套对象(Angular2 RC1 + TS)

来自分类Dev

HashLocationStrategy在Angular2 RC1中不起作用

来自分类Dev

Angular2 RC1在PropDecoratorFactory上未找到带有@Input的指令注释

来自分类Dev

HTTP和嵌套对象(Angular2 RC1 + TS)

来自分类Dev

Angular2 RC1错误“提供的参数与调用目标的任何签名均不匹配”

来自分类Dev

如何编写Angular2 npm模块-Angular2 RC 6

来自分类Dev

Angular2 如何知道模板对应的是哪个组件?

来自分类Dev

Angular2 + Typescript:如何操作DOM元素?

来自分类Dev

如何在Angular2中获取(DOM)元素的宽度

来自分类Dev

如何在Angular2 Dart中查询Dom元素?

来自分类Dev

如何传递在 angular2/4 中点击的 dom 元素?