これをCSSに追加できます
::ng-deep .mat-form-field-wrapper{
margin-bottom: -1.25em;
}
ただし、これを追加すると、<mat-hint>hint</mat-hint>
または<mat-error>error</mat-error>
を適切に配置できなくなります。パディングを削除すると、エラーとヒントがフォームフィールド内に入ります。
::ng-deep
(for Angular 8)を使用しない場合)
パディングを変更するコンポーネントのカプセル化をオフにします。
あなたはこれを行うことができます
import {Component,ViewEncapsulation} from '@angular/core';
@Component({
selector: 'example',
templateUrl: 'example.component.html',
styleUrls: ['example.component.css'],
encapsulation : ViewEncapsulation.None,
})
export class ExampleComponent {}
スタイルを設定するコンポーネントをカスタムクラスでラップします。したがって、他のmat-form-field
コンポーネントには影響しません。とりあえずこれをmy-form-field
クラスでラップしましょう
<mat-form-field class="my-form-field>
<input matInput placeholder="Input">
</mat-form-field>
.my-form-field .mat-form-field-wrapper{
margin-bottom: -1.25em;
}
ビューのカプセル化をオフにすることなく、これらのCSSをグローバルスタイルシートに追加できます。しかし、よりエレガントな方法は上記の方法です
以下を試してください:
<mat-form-field style="margin-bottom: -1.25em">
(この追加の下部スペースについての議論は、ここで行うことができます: https://github.com/angular/components/issues/7975 )
私の解決策は、追加のクラスを使用することでした。
HTML:
<mat-form-field class="no-padding">
<input type="number" matInput placeholder="Speed" [ngModel]="speed"
(ngModelChange)="onSpeedChange('speed', $event)"/>
</mat-form-field>
SCSS:
.no-padding {
.mat-form-field-wrapper {
padding-bottom: 0 !important;
}
}
!importantキーワードは、代わりにデフォルトをそのまま使用するため、残念ながら必要です。
.mat-form-field-infix{
display: block;
position: relative;
flex: auto;
padding: 0;
border-top: 0px solid transparent !important;
}
あなたはCSSで重要な追加することができます
angular 9では、component.scssに以下を追加することによってのみギャップを削除することができました(他の回答は私の場合機能しませんでした):
::ng-deep .mat-form-field-wrapper{
margin: 0 !important;
padding: 0;
}
また、私はAppearance = "outline"を使用しています。他の外観の場合、他の要素がある可能性があるため、おそらく他のCSSクラスとプロパティを変更する必要があります。
次のように、mat-form-fieldにheight:4emを追加できます。
<mat-form-field
class="height-4em"
appearance="outline"
>
<mat-label>Favorite food</mat-label>
<input matInput placeholder="Ex. Pizza" value="Sushi">
</mat-form-field>
Style.scssで次のcssを使用して、mat-form-filedの下部のスペースを削除できます
.mat-form-field-wrapper{
padding-bottom: 10px;
}