如何通过 Flex-Layout 设置 Angular Material Footer

Posted

技术标签:

【中文标题】如何通过 Flex-Layout 设置 Angular Material Footer【英文标题】:How set up Angular Material Footer via Flex-Layout 【发布时间】:2019-05-22 01:34:43 【问题描述】:

如何在我的应用程序中设置页脚(我使用 Angular Material),以便它:

    如果内容高度小于视口,则粘在底部 如果内容高度大于视口,则向下移动/被推下

还有一件更重要的事情——我想通过 angular/flex-layout 来实现这一点,而不是通过标准的 html/CSS 'flex-box'。

<mat-sidenav-container>
  <mat-sidenav #sidenav
    fixedInViewport="true"
    [attr.role]="(isHandset$ | async) ? 'dialog' : 'navigation'"
    [mode]="(isHandset$ | async) ? 'over' : 'side'"
    [opened]="!(isHandset$ | async)">

    <mat-nav-list>
      <mat-list-item *ngFor="let li of listItems" routerLink="li.link">
        <mat-icon mat-list-icon>li.icon</mat-icon>
        <p mat-line>li.name</p>
      </mat-list-item>
    </mat-nav-list>
  </mat-sidenav>
  <mat-sidenav-content>

    <app-header (menuButtonClick)="sidenav.toggle()"></app-header>

    <ng-content select="[outlet]"></ng-content>

    <app-footer></app-footer>

  </mat-sidenav-content>
</mat-sidenav-container>   

谢谢大家。

【问题讨论】:

Sticky footer in Angular 2 Material的可能重复 嗨@Narm - 我问是否有人知道如何使用 angular/flex-layout 解决这个问题。不是传统的“弹性盒子”。 够公平,点。我发现这与其他问题有点不同。 【参考方案1】:

如果您更喜欢填充内容而不是页脚(Akhi 的解决方案),这里有几行的解决方案:

app.component.html:

<div fxLayout="column" fxFlexFill>
    <app-header></app-header> // your header
    <div fxFlex>
        <router-outlet></router-outlet> // your content
    </div>
    <app-footer></app-footer> // your footer
</div>

styles.css:

html, body 
    height: 100%;
    box-sizing: border-box;
    margin: 0;

【讨论】:

我认为这里不需要fxFlexFill,因为我们需要将它与容器的子元素一起使用。【参考方案2】:

通过添加fxLayout="column" 来制作容器flex 和方向column 并通过fxFlexOffset="auto"使页脚粘底

  <mat-sidenav-content fxLayout="column">

    <app-header (menuButtonClick)="sidenav.toggle()"></app-header>

    <ng-content select="[outlet]"></ng-content>

    <app-footer fxFlexOffset="auto"></app-footer>

  </mat-sidenav-content>

【讨论】:

以上是关于如何通过 Flex-Layout 设置 Angular Material Footer的主要内容,如果未能解决你的问题,请参考以下文章

未找到模块:错误:无法解析“/app”中的“@angular/flex-layout”

@angular/flex-layout 'space-between' 布局

Angular 2 材质和 flex-layout 对齐

使用 @angular/flex-layout 作为网格布局

错误:目标入口点“@angular/flex-layout”缺少依赖项:-@angular/cdk/bidi

无法在 Angular cli 13.0.3 中安装 @angular/flex-layout