作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在升级现有的 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 注入(inject) DOM 时添加这个?
更新
问题与此类似( Angular2 - adding [_ngcontent-mav-x] to styles ),但我想问题是如何在 ViewEncapsulation 中包含注入(inject)的 dom?
最佳答案
如果您使用类似的样式
:host .output {
...
}
应该应用它。
如果这不起作用,请使用
:host /deep/ .output {
...
}
关于jquery - 如何将 DOM 附加到 Angular 2 组件并仍然获得封装样式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39961645/
我是一名优秀的程序员,十分优秀!