模板解析错误:'md-form-field'不是已知元素

时间:2017-08-30 07:25:06

标签: angular angular-material angular-material2

我正在使用Angular 4和Angular Material 2.对于以下代码:

<form>
  <md-form-field>
    <input mdInput [ngModel]="userName" placeholder="User" [formControl]="usernameFormControl">
    <md-error *ngIf="usernameFormControl.hasError('required')">
      This is <strong>required</strong>
    </md-error>
    <input mdInput [ngModel]="password" placeholder="Password" [formControl]="passwordFormControl">
    <md-error *ngIf="passwordFormControl.hasError('required')">
      This is <strong>required</strong>
    </md-error>
    <button md-raised-button color="primary" [disabled]="!usernameFormControl.valid || !passwordFormControl.valid">Login</button>
  </md-form-field>
</form>

我收到错误:

  

模板解析错误:'md-form-field'不是已知元素:   1.如果'md-form-field'是Angular组件,则验证它是否是此模块的一部分。   2.如果'md-form-field'是Web组件,则将'CUSTOM_ELEMENTS_SCHEMA'添加到此组件的'@ NgModule.schemas'   压制此消息。 (“[ERROR - &gt;]

你能帮我解决我失踪的地方吗?

以下是我输入材料模块的 app.module.ts 代码:

import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { HttpModule } from '@angular/http';
import { FormsModule, ReactiveFormsModule } from '@angular/forms';

import { AppComponent } from './app.component';
import { LoginComponent } from './login.component';

import { BrowserAnimationsModule } from '@angular/platform-browser/animations';

import {
  MdAutocompleteModule,
  MdButtonModule,
  MdButtonToggleModule,
  MdCardModule,
  MdCheckboxModule,
  MdChipsModule,
  MdCoreModule,
  MdDatepickerModule,
  MdDialogModule,
  MdExpansionModule,
  MdGridListModule,
  MdIconModule,
  MdInputModule,
  MdListModule,
  MdMenuModule,
  MdNativeDateModule,
  MdPaginatorModule,
  MdProgressBarModule,
  MdProgressSpinnerModule,
  MdRadioModule,
  MdRippleModule,
  MdSelectModule,
  MdSidenavModule,
  MdSliderModule,
  MdSlideToggleModule,
  MdSnackBarModule,
  MdSortModule,
  MdTableModule,
  MdTabsModule,
  MdToolbarModule,
  MdTooltipModule
} from '@angular/material';

import {CdkTableModule} from '@angular/cdk';

@NgModule({
  imports: [
    BrowserModule,
    BrowserAnimationsModule,
    HttpModule,
    FormsModule,
    ReactiveFormsModule,
    MdAutocompleteModule,
    MdButtonModule,
    MdButtonToggleModule,
    MdCardModule,
    MdCheckboxModule,
    MdChipsModule,
    MdCoreModule,
    MdDatepickerModule,
    MdDialogModule,
    MdExpansionModule,
    MdGridListModule,
    MdIconModule,
    MdInputModule,
    MdListModule,
    MdMenuModule,
    MdNativeDateModule,
    MdPaginatorModule,
    MdProgressBarModule,
    MdProgressSpinnerModule,
    MdRadioModule,
    MdRippleModule,
    MdSelectModule,
    MdSidenavModule,
    MdSliderModule,
    MdSlideToggleModule,
    MdSnackBarModule,
    MdSortModule,
    MdTableModule,
    MdTabsModule,
    MdToolbarModule,
    MdTooltipModule,
    CdkTableModule
  ],
  declarations: [
    AppComponent,
    LoginComponent
  ],
  providers: [],
  bootstrap: [AppComponent]
})
export class AppModule { }

3 个答案:

答案 0 :(得分:53)

<强>更新

由于 2.0.0-beta.12 md 前缀已被删除,而支持 mat 前缀。有关详细信息,请参阅此CHANGELOG

  

所有&#34; md&#34;前缀已被删除。请参阅中的deprecation notice   beta.11备注了解更多信息。

更新后, <md-form-field> 应更改为 <mat-form-field> 。此外, MdFormFieldModule MdInputModule 应更改为 MatFormFieldModule {{1 }}

MatInputModule

以下是使用 import { MatFormFieldModule } from '@angular/material'; import { MatInputModule } from '@angular/material'; @NgModule({ imports: [ .... MatFormFieldModule, MatInputModule, .... ] Updated StackBlitz演示的链接。

原文:

2.0.0-beta.12 2.0.0-beta.10中引入。请参阅changelog文档中的以下内容:

  

md-input-container 重命名为 md-form-field (仍在   向后兼容)。旧选择器将在后续版本中删除。

以下是完成CHANGELOG的链接。

要使用 <md-form-field> 选择器,请确保安装了2.0.0-beta.10版本的材料。此外,您需要在 <md-form-field> 导入中导入 MdFormFieldModule 模块:

AppModule

对于任何偶然发现此问题的人,这里是StackBlitz上working demo的链接。

答案 1 :(得分:1)

如果您发现导入文件有困难,那么您只需要导入一种方法即可。

首先导入.component.ts

中的所有必需组件

导入模块中的特定模块.module.ts

然后在@NgModule ({ imports : [ <Example>Module ] })

中的导入中添加它

您想要在角度应用程序中导入formcontrol的示例

1)。 app.component.ts

`import { FormGroup, FormControl } from '@angular/forms'`

2)。 app.module.ts

import { FormsModule } from '@angular/forms'

中的app.module.ts下面的

@NgModule ({ imports : [ FormsModule ] })

答案 2 :(得分:0)

您可以像这样使用md-input-container:

&#13;
&#13;
<md-input-container>
 <input mdInput name="name" [(ngModel)]="yourModel" class="filter-input-field"/>
</md-input-container>
&#13;
&#13;
&#13;