Angular 4 mat-form-field with mat-select
Posted
技术标签:
【中文标题】Angular 4 mat-form-field with mat-select【英文标题】: 【发布时间】:2018-04-16 16:57:53 【问题描述】:所以,我在使用 mat-select 和 mat-form-field 时遇到问题。将 mat-form-field 与 mat-input 一起使用不是问题,而且我相当确定我的导入也是正确的,但是在尝试使用 mat-select 时收到以下错误:
错误:md-form-field 必须包含 MdFormFieldControl。是不是忘了给原生添加 mdInput...
我的 html 代码如下:
<mat-form-field class="full-width">
<mat-select name="sampleType" formControlName="sampleTypeCtrl"
placeholder="Sample Type" required>
<mat-option *ngFor="let sample of samples" [value]="sample.value">
sample.viewValue
</mat-option>
</mat-select>
</mat-form-field>
包含此组件并导入到我的主 app.module.ts 文件中的视图模块如下:
...
import MatFormFieldModule, MatInputModule, MatSelectModule from
'@angular/material';
...
@NgModule(
imports: [
...
MatInputModule,
MatFormFieldModule,
MatSelectModule,
...
],
)
export class ViewModule
我的主 app.module.ts 文件包含 ViewModule 和 NoConflictStyleCompatibilityMode 导入,如下所示:
...
import ViewModule from './view/view.module';
import NoConflictStyleCompatibilityMode from '@angular/material';
...
@NgModule(
...
imports: [
ViewModule,
NoConflictStyleCompatibilityMode
],
...
)
export class AppModule
当我从 mat-select 周围删除 mat-form-field 时,错误消失了,但是我发现 mat-input(使用 mat-form-field)和 mat-select 的样式不一致。我正在同时导入 MatSelectModule 和 MatFormFieldModule,但出现此错误。我还更新了我的角度材料 2 的 npm,以便它具有最新和最好的,但仍然没有。我在看什么?我在最近的 ***s 中看到了此类问题,但我已经尝试过每个解决方案都没有运气。
mat-select Not Working Properlymat-form-field must contain a MatFormFieldControl
【问题讨论】:
这些模块MatInputModule, MatFormFieldModule, MatSelectModule
存在于 ViewModule 中,但它们不是 AppModule 的一部分。您应该从 ViewModule 导出材质模块
【参考方案1】:
尝试将matInput
属性添加到您的嵌套mat-select
(如错误消息所示):
<mat-form-field>
<mat-select matInput name="mySelect">
<mat-option>
...
</mat-option>
</mat-select>
</mat-form-field>
这个结构对我有用。
UPD.: 快速 plnkr 示例 https://plnkr.co/edit/9Yz6xkcVMCMpRhP3Qse9
【讨论】:
感谢您的回复。当我添加 'matInput' 时,我仍然收到以下错误:错误:md-form-field 必须包含 MdFormFieldControl。是不是忘记给原生添加 mdInput 了…… 另外,为什么它还在抱怨使用'md'前缀的东西呢?我已将所有内容切换为使用“mat”前缀。这令人困惑。 您能否检查一下您的模块是否导入了 MatInputModule、MatSelectModule 和 MatFormFieldModule?您能否提供代码的 plnkr 示例? 还有一件事是需要导入材质主题才能使用组件。 github.com/angular/material2/issues/6948你用了吗? 是的,我已经导入了一个主题,并在我的模块中导入了 MatInputModule、MatSelectModule 和 MatFormFieldModule。今晚我会努力完成一个笨拙的工作。【参考方案2】:刚刚将我的角度更新到最新版本,在这种情况下是 5,它解决了问题
【讨论】:
【参考方案3】:我遇到了类似的问题,从 github 上的 issue 我意识到 ngIf 一定不能在 mat-select 上。
这可能对某些人有所帮助:
确保您的 mat-select 上没有 ngIf。
【讨论】:
以上是关于Angular 4 mat-form-field with mat-select的主要内容,如果未能解决你的问题,请参考以下文章
Angular 8:将 Mat-form-field 中的高度更改为特定像素数
Angular Material 表单问题:角度 mat-form-field 必须包含 MatFormFieldControl
在 Angular/Material 中设置 mat-form-field 输入样式
Angular4 mat-form-field textArea 无法启用水平调整大小