我正在尝试将样式应用于子组件标记,但我不能这样做。
我有带锚标签的子组件。
即使我在父组件中为锚标签设置了样式,但它还没有应用。它有什么解决方案?
工作代码:http://plnkr.co/edit/CJCpV4ZbG7hdxT2AeSmt?p=preview
let params = new URLSearchParams();
params.append('arrayparams', 'val1');
params.append('arrayparams', 'val2');
params.append('arrayparams', 'val3');
在父组件中,我正在使用子组件并为此子组件应用样式。
Html代码:
<a href="https://www.google.com">Google</a>
Css代码:
<div class="container">
<div class="test">
<testapp></testapp>
</div>
</div>
答案 0 :(得分:62)
这是因为默认情况下组件具有视图封装(阴影dom)。要禁用此行为,您可以使用encapsulation
属性,如下所述:
import {Component, ViewEncapsulation} from '@angular/core';
import {TestApp} from 'testapp.component.ts';
@Component({
selector:'test-component',
styleUrls: ['test.component.css'],
templateUrl: './test.component.html',
directives:[TestApp],
encapsulation: ViewEncapsulation.None // <------
})
export class TestComponent{
}
请参阅此plunkr:http://plnkr.co/edit/qkhkfxPjgKus4WM9j9qg?p=preview。
答案 1 :(得分:2)
使用styleUrls属性时,样式是 local 到一个组件,而不是它的子组件。所以我做了两个改变: 1)将styleUrls移动到testapp组件。 2)将div移动到testapp组件。
import {Component} from '@angular/core';
@Component({
selector:'testapp',
styleUrls: ['./test.component.css'],
template: `
<div class="test">
<a href="https://www.google.com">Google</a>
</div>
`
})
export class TestApp{
}
答案 2 :(得分:0)
编辑:这应该解决:
在子类的CSS中写下代码
:host.parentclass childclass{
}
父类是子的直接父级。 childclass是应用于子组件的类。