我看到它的方式,它可以用作<div>
容器的替代品,用于样式化组件。例如:
@Component({
template: `
<div class="container">
<h1>Some Title</h1>
<p>Some Content</h1>
</div>
`,
styles: [`
.container {
border: 1px solid black;
display: flex;
}
`],
})
@Component({
template: `
<h1>Some Title</h1>
<p>Some Content</h1>
`,
styles: [`
:host {
border: 1px solid black;
display: flex;
}
`],
})
如果我理解正确,这两个解决了完全相同的问题。并且很少有一个元素和类可以在几乎所有单个组件中担心。
问题:这是:host
的用途吗?如果没有,那么它的重点是什么,除了在任何地方添加容器之外,为组件赋予样式的最佳实践是什么?
答案 0 :(得分:3)
他们没有解决同样的问题。 :host
用于为主机设置样式,.container
用于样式化组件中具有container
类的任何div。
由于封装,.container
div不可用于组件外部的样式,而主机元素可以设置样式。
请注意,display
属性的初始值为inline
,因此默认情况下,您的组件将显示为inline
元素。也许你不想那样,尤其是if you have a block element inside of it,这似乎是违反直觉的(即使它是允许的)。
答案 1 :(得分:0)
:host
为当前组件设置了包装元素(例如<app-header>
元素),而且据我所知,这是一种简单而舒适的方式来设置这样的元素。
答案 2 :(得分:0)
我还将在当前答案中添加以下观察结果:
class .container
.container
,则必须始终保持同步,以防您想要重命名组件。在大型应用程序中,这往往会在开发的早期阶段发生。element.classList.add(); .remove()
<强>:主机强>
.container
类。:host
选择器都会变得无用,这会导致使用.container
类。