我已经在使用材质表单的对话框中创建了一个表单但是我似乎无法获得比180px宽的输入,尽管有许多例子包括https://material.angular.io/components/input/example。
我确定这是一个相当标准的css,但我没有那种大脑,所以我无法弄清楚问题。
有没有人有一个认真/非平凡的例子?
这是我的:
<h1 mat-dialog-title>{{title}}</h1>
<mat-dialog-content>
<form novalidate #f="ngForm" class="form-full-width">
<mat-form-field class="input-full-width">
<input type="text" [(ngModel)]="data.name" name="name" matInput placeholder="Name">
<mat-hint>Enter a unique name.</mat-hint>
</mat-form-field>
<mat-form-field class="input-full-width">
<textarea [(ngModel)]="data.description" name="description" matInput placeholder="Description"></textarea>
<mat-hint>You should describe the purpose/use of this thing.</mat-hint>
</mat-form-field>
</form>
</mat-dialog-content>
CSS:
.form-full-width {
min-width: 150px;
max-width: 500px;
width:100%;
}
.input-full-width {
width:800px;
}
.mat-form-field.mat-form-field {
width: auto;
}
由于
答案 0 :(得分:13)
啊哈!看起来它与View Encapsulation有关。该线程解释了它:https://github.com/angular/material2/issues/4034但是更改组件的封装会导致各种编译失败。这篇文章给了我正确的解决方案:https://material.angular.io/guide/customizing-component-styles
我将我的风格转移到全球范围......
.formFieldWidth480 .mat-form-field-infix {
width: 480px;
}
并在打开对话框的组件中:
this.newDialog = this.dialog.open(NewDialogComponent,
{
width: '650px', height: '550px',
data : newThing,
panelClass : "formFieldWidth480"
});
我希望这会在我失去的那一天拯救别人......
由于
答案 1 :(得分:5)
css中的.mat-form-field.mat-form-field导致了问题。一旦我删除它,我就可以使用.input-full-width width设置来控制宽度。我在这里设置了一个演示:StackBlitz.com
<h1 mat-dialog-title>{{title}}</h1>
<mat-dialog-content>
<form novalidate #f="ngForm" class="form-full-width">
<mat-form-field class="input-full-width">
<input type="text" [(ngModel)]="data.name" name="name" matInput placeholder="Name">
<mat-hint>Enter a unique name.</mat-hint>
</mat-form-field>
<mat-form-field class="input-full-width">
<textarea [(ngModel)]="data.description" name="description" matInput placeholder="Description"></textarea>
<mat-hint>You should describe the purpose/use of this thing.</mat-hint>
</mat-form-field>
</form>
</mat-dialog-content>
&#13;
.form-full-width {
min-width: 150px;
max-width: 500px;
width:100%;
}
.input-full-width {
width:800px;
}
/* .mat-form-field.mat-form-field {
width: auto;
} */
&#13;
答案 2 :(得分:3)
您可以尝试使用
mat-form-field {
width: 100%;
}
我在mat-card
中遇到了同样的问题,这对我有用。
答案 3 :(得分:3)
.mat-form-field-infix
将180px
作为默认值probably beacause of this。 auto
值使浏览器可以计算宽度,而不必放置硬编码值。 !important
声明对此强制样式。!important
,因为它符合使用此属性的规则。 See docs
::ng-deep .mat-form-field-infix {
width: auto !important;
}
答案 4 :(得分:1)
我找到的解决方法是将this one改成一般的style.css
mat-form-field {
margin-left: 2.5rem;
width: calc(100% - 2.5rem);
}
答案 5 :(得分:0)
::ng-deep .mat-form-field-infix {
width:800px !important;
}
这应该工作正常。不确定是否可以在没有自定义CSS的情况下完成。