我试图在我的应用程序中使用CSS GRID作为圣杯布局。使用角度路由器,我的页面的主要内容被动态加载并作为<router-outlet>
之后的组件注入。
您可以找到我的应用程序here的示例。
为了获得正确的网格定义,我使用grid-area: <name>
来指定组件及其位置。使用路由组件时,这是不可能的,因为我没有对动态组件的固定引用。在每个加载的组件的:host
中应用CSS是一种解决方法,但不是可接受的解决方案。
有几个问题阻止我在路由组件(app.component.scss
)的主机中将CSS应用于动态组件:
app-home
vs app-about
) <app-root _nghost-c0 ng-version="5.0.2">
<app-header _ngcontent-c0 _nghost-c1>...</app-header>
<app-navbar _ngcontent-c0 _nghost-c2>...</app-navbar>
<router-outlet _ngcontent-c0></router-outlet>
<app-home _nghost-c6>...</app-home>
<app-footer _ngcontent-c0 _nghost-c3>...</app-footer>
</app-root>
请注意主机的引用_ngcontent-c0
未应用于路由组件app-home
。
router-outlet + * {
grid-area: content;
background: greenyellow;
}
变为
router-outlet[_ngcontent-c0] + *[_ngcontent-c0] {
grid-area: content;
background: greenyellow;
}
缺少主机的上下文和通配符选择器的缩小对我来说都是错误的。任何人都可以帮我找到一种方法来使用动态角度组件正确实现CSS网格?请查看我的sample code以了解问题。
答案 0 :(得分:0)
尝试将您的路由出口封装到div中,并为此div分配网格区域。