Угловой материал 2 md-sidenav-content не занимает всю высоту

Я использую материал Angular 2, и у меня возникает эта проблема, когда md-sidenav-content занимает только высоту содержимого. Однако я хочу, чтобы это было либо 100% высоты, либо высоты содержимого (в зависимости от того, что больше). Обратите внимание, что родительский контейнер md-sidenav-container имеет полную высоту, которую я хотел.

скриншот

screenshot2

Однако нигде в своем приложении я не использовал md-sidenav-content. Кажется, это что-то сгенерированное самим Angular Material 2. Поэтому я не могу изменить его свойство.

При наличии этой проблемы я не могу добиться, чтобы зеленый фон занимал всю высоту.

// app.component.html
<md-sidenav-container>

<!--side nav-->
<md-sidenav #sidenav mode="over" class="app-sidenav">

    <!--header-->
    <div id="side-nav-header">
    <img id="side-menu-logo" src="../assets/images/logo_small.png"> MyApp
    </div>

    <!--body-->
    <a [mdTooltip]="!isCurrentUserExist ? 'Please login first!': ''" [routerLink]="['/create-timesheet']" (click)="sidenav.close()">Timesheet</a>

</md-sidenav>

<br><br>

<!--main content-->
<router-outlet></router-outlet>
</md-sidenav-container>


// login.component.html
<div id="login-container" class="container-fluid">
    <div class="row">
        <div id="login-component" class="col-md-6 offset-md-3">
            <md-card>

                <h2>Login</h2>

                <br>

                <form name="form" [formGroup]="loginForm" (ngSubmit)="onLogin()">

                    <!--email-->
                    <md-input type="email" placeholder="Email" formControlName="email"></md-input>
                    <label class="errorMessage" *ngIf="!loginForm.controls['email'].valid && loginForm.controls['email'].dirty" for="email">
            Email is required</label>

                    <!--password-->
                    <md-input type="password" placeholder="Password" formControlName="password"></md-input>
                    <label class="errorMessage" *ngIf="!loginForm.controls['password'].valid && loginForm.controls['password'].dirty" for="lastName">
            Password is required</label>

                    <br><br>

                    <div class="form-group">
                        <button [disabled]="loading || !loginForm.valid" class="btn btn-primary">Login</button>
                        <a *ngIf="!isLoading" [routerLink]="['/forgot-password']" (click)="onForgotPassword()">forgot password</a>
                    </div>
                </form>
            </md-card>
        </div>
    </div>
</div>


// loging.component.css
#login-container {
    min-height: 100%;
    background-color: green;
}

person ErnieKev    schedule 24.02.2017    source источник


Ответы (4)


Попробуйте дать

height: 100vh;

к md-sidenav-container. Это будет визуальная высота, т.е. высота экрана, на котором он отображается. Если у вас md-toolbar, расположенный за пределами md-sidenav-container, вы можете настроить высоту самого контейнера, вычтя пиксели md-toolbar (скажем, его высота 50 пикселей):

height: calc(100vh - 50px);
person Michele Sapignoli    schedule 24.02.2017

У меня тоже была эта проблема.

Попробуйте установить для html и высоты тела значение 100% с помощью CSS https://material.angular.io/components/sidenav/overview, как рекомендовано в документации в разделе Изменение размера sidenav.

person Marc Gaston-Johnston    schedule 20.07.2017

аналогичный вопрос и ответы, которые вы ищете, можно найти здесь. Не удается установить md-sidenav для angular2-материала с высотой 100%

установка высоты на 100vh вместо 100% - самый простой способ решить эту проблему.

person Sithija Piyuman Thewa Hettige    schedule 15.08.2017

Вы можете использовать свойство fullscreen в mat-sidenav-container следующим образом:

<mat-sidenav-container fullscreen>
person alberto montalesi    schedule 13.03.2019