【发布时间】:2017-02-19 01:46:37
【问题描述】:
我正在升级现有的 Angular 2 应用程序,该应用程序广泛使用 JQuery 插件、D3 甚至一些 React 组件(所有这些都使用 sizzle,所以我很确定它适用于所有组件)。由于一次重写所有这些确实没有意义,我试图将其中一些包装在 Angular 2 组件中。为了向您展示我的意思,我有一个简单的组件,它使用 Jquery 将项目添加到 DOM...
import { Component, AfterViewInit, ElementRef } from '@angular/core';
declare var $:JQueryStatic;
@Component({
selector: 'px-spinner',
template: String(require('./spinner.template')),
styles: [require('!raw!stylus-loader!./spinner.styles')]
})
export class SpinnerComponent implements AfterViewInit{
constructor(public el:ElementRef){}
ngAfterViewInit(){
$(this.el.nativeElement).append("<div class='output'>Output 2</div>")
}
}
这里的问题是样式没有应用于输出 2。当我查看 DOM 时,原因变得很明显......
<ng-spinner class="ng-scope" id="NG2_UPGRADE_0_pxSpinner_c0" _nghost-ylc-1="">
<div _ngcontent-ylc-1="" class="start">
<div _ngcontent-ylc-1="" class="output">output 1</div>
</div>
<div class="output">Output 2</div>
</ng-spinner>
JQuery 添加的 DOM 元素缺少 _ngcontent-ylc-1=""。有没有办法让 Ng2 在 JQuery 注入 DOM 时添加这个?
更新
这个问题与这个问题(Angular2 - adding [_ngcontent-mav-x] to styles)类似,但我想问题是如何将注入的 dom 包含在 ViewEncapsulation 中?
【问题讨论】:
标签: jquery angularjs dom d3.js angular