子路径上路由器插座内的角度组件将无法填充可用空间

时间:2017-07-08 00:59:26

标签: angular angular2-routing angular2-template angular-routing angular2-components

我的应用程序的根<router-outlet></router-outlet>将在导航到'/ child'路径时在子模块中显示以下组件:

child.component.ts

import {Component} from "@angular/core";

@Component({
  template: `
    <div style="display:flex; width: 100%; height: 100%;">
      <custom-sidebar-component></custom-sidebar-component>
      <router-outlet></router-outlet>
    </div>`
})
export class ChildComponent {
}

现在这个组件显示得很好,并按照我的预期填满整个屏幕。但是,当我尝试导航到此模块的子路径时,比如说'/ child / home',我希望以下HTML显示在上面组件模板中看到的子<router-outlet></router-outlet>中。

子-home.component.html

<style>
  .parent-style {
    display: flex;
    flex-flow: row wrap;
    width: 100%;
    height: 100%;
  }

  .box-style {
    display: flex;
    justify-content: center;
    align-items: center;
    flex-grow: 1;
    background: red;
    color: white;
    border: 1px solid black;
  }
</style>
<div class="parent-style">
  <div class="box-style">Box 1</div>
  <div class="box-style">Box 2</div>
</div>

但这次路由器插座的内容并没有像我希望的那样填满可用空间。我能够看到我想要的结果的唯一方法是打开开发工具并编辑包装我的组件的Angular生成的_nghost属性。如何让我的组件填充可用空间?

这就是我的期望

expected

这就是我实际得到的

enter image description here

1 个答案:

答案 0 :(得分:4)

因为渲染的DOM如下所示:

<app-child  _nghost-c1="">
<div _ngcontent-c1="" class="parent-style">
<div _ngcontent-c1="" class="box-style">Box 1</div>
<div _ngcontent-c1="" class="box-style">Box 2</div></div>
</app-child>

因此解决方案非常简单,向主机元素添加一些样式,您可以使用host:{'class':'foo'}或直接在ChildComponent的host:{'style':'width:100%'}中添加@Component{}