角4 CSS上使用document.createElement()

问题描述:

我尝试在角4角4 CSS上使用document.createElement()

TS

const bookmark = document.createElement('a'); 
bookmark.className = 'bookmark'; 

动态创建元素SCSS

.bookmark { 
    display: block; 
    background: white; 
    color: #999; 
    padding: 20px; 
    transition: 0.3s ease all; 
    border-bottom: 1px solid #DDD; 
} 

但是风格不上的应用元素来自SASS文件。如果我直接在JS文件中添加的风格,它的工作原理:

const bookmark = document.createElement('a'); 
bookmark.className = 'bookmark'; 

bookmark.style.display = 'block'; 
bookmark.style.background = 'white'; 
bookmark.style.color = '#999'; 
bookmark.style.padding = '20px'; 
bookmark.style.transition = '0.3s ease all'; 
bookmark.style.borderBottom = '1px solid #DDD'; 

如果我直接在HTML文件中创建的元素,它同时在TS创建一个错过这个自动获得一个_ngcontent-C1属性属性(如果我在Chrome开发人员工具 - 元素面板中手动输入它,它会从SCSS获取样式)。

<div class="bookmarks-list"> 
    <a class="bookmark"> 
    I am the bookmark 
    </a> 
</div> 

我的问题是,如何将SASS文件中的.bookmark类样式应用于TS中创建的书签元素?

+1

,你为什么和角度做标准的DOM呢? –

+0

你有文件模板吗? –

+0

@TatsuyukiIshi谢谢你的提问。我是Angular4的新手,我尝试为_click_事件的组件视图创建元素。你建议用什么方式代替_document.createElement()_? –

您不同意的全部代码,但可能它与在那里你创建你的元素,如果它是一个组件内的问题,它可能不是由于封装达到你的CSS,尽量使用类似如下:

@Component({ 
// ... 
encapsulation: ViewEncapsulation.None, //<<<<< this one! 
styles: [ 
    // ... 
] 
}) 
export class HelloComponent { 
// ... 
} 

欲了解更多信息,请访问以下链接: https://angular.io/docs/ts/latest/guide/component-styles.html#!#view-encapsulation

+0

是的,它是在一个组件里面,改变封装模式确实有帮助。非常感谢! –