我的一个Angular模板中有一个ngFor循环,其中包含另一个组件,这里是一个片段:
<div *ngFor="let thing of things" (click)="onClick($event, thing)">
<app-thing [data]="thing"></app-thing>
</div>
和Angular使用包含名为 _ngcontent_c4 的属性的div包装每个 app-thing ,如下所示:
<div _ngcontent_c4>
<app-thing...>
<!-- ... -->
</app-thing>
</div>
<div _ngcontent_c4>
<app-thing...>
<!-- ... -->
</app-thing>
</div>
<div _ngcontent_c4>
<app-thing...>
<!-- ... -->
</app-thing>
</div>
<!-- ... --->
父div包装器导致问题,尤其是样式化问题,并且使用:host选择器更难以设置组件本身的样式 . 我不得不在:host之外移动一些样式来定位父级以使我的flexbox布局正常工作 .
有没有办法让Angular不包装组件?
2 回答
而不是迭代div中的组件,而是迭代组件本身,这将应用(this)样式 .
而是这样做:
这将使样式更容易,并将您的样式保持在其组件中,就像您希望的那样 .
您可以通过在组件元数据中设置
encapsulation
属性来控制Angular如何将样式应用于组件:ViewEncapsulation.None
不会添加额外的属性 . 检查文档中的ViewEncapsulation和Component Styles以获取更多信息 .