如果 X 是 Angular 组件,则验证它是否是此模块的一部分

6 angular-material2 angular5

每当我添加新的材料指令/组件时,我都会收到这个可怕的错误:

Uncaught Error: Template parse errors:
'mat-input' is not a known element:
1. If 'mat-input' is an Angular component, then verify that it is part of this module. **(By doing what, asshole?)**
2. If 'mat-input' is a Web Component then add 'CUSTOM_ELEMENTS_SCHEMA' to the '@NgModule.schemas' of this component to suppress this message.
Run Code Online (Sandbox Code Playgroud)

我的主模块中有这个:

import {BrowserModule} from '@angular/platform-browser';
import {NgModule} from '@angular/core';
import {BrowserAnimationsModule} from '@angular/platform-browser/animations';
import {MatCheckboxModule, MatMenuModule, MatInput, MatInputModule} from '@angular/material';
import {AppComponent} from './app.component';
import {RoutingModule, EmptyComponent} from './routing.module';
import {SharedModule} from './shared.module';
import {RouterModule, RouterLink} from '@angular/router';
import {MatButtonModule} from '@angular/material/button';
import {MatIconModule} from '@angular/material/icon';

@NgModule({

  declarations: [
    AppHeader,
    AppComponent,
    PageNotFoundComponent,
    FooterComponent,
    EmptyComponent,
    ControlPanelComponent,
    AboutComponent,
    HomeComponent,
    ContactComponent,
  ],

  imports: [
    MatInputModule,
    MatIconModule,
    MatButtonModule,
    RouterModule,
    RouterModule,
    BrowserModule,
    MatMenuModule,
    MatButtonModule,
    MatCheckboxModule,
    BrowserAnimationsModule,
    RoutingModule,
    SharedModule
  ],

  exports: [
    RouterModule,
    RoutingModule,
    MatMenuModule
  ],

  providers: [],

  bootstrap: [
    AppComponent
  ]
})


export class AppModule {
}
Run Code Online (Sandbox Code Playgroud)

这是一个共享模块,我相信它包含大多数依赖项:

import {NgModule} from '@angular/core';
import {CommonModule} from '@angular/common';
import {FlexLayoutModule} from '@angular/flex-layout';
import {FormsModule, ReactiveFormsModule} from '@angular/forms';
import {RouterModule, Routes, RouterLink} from '@angular/router';
import {RoutingModule} from './routing.module';

import {
  MatButtonModule,
  MatIconModule,
  MatInputModule,
  MatSelectModule,
  MatMenuModule,
  MatTabsModule,
  MatToolbarModule,
} from '@angular/material';


@NgModule({

  imports: [
    RouterModule,
    RoutingModule,
    CommonModule,
    FormsModule,
    ReactiveFormsModule,
    FlexLayoutModule,
    MatButtonModule,
    MatIconModule,
    MatInputModule,
    MatSelectModule,
    MatMenuModule,
    MatTabsModule,
    MatToolbarModule,
  ],

  declarations: [],

  exports: [
    RouterModule,
    RoutingModule,
    FormsModule,
    ReactiveFormsModule,
    FlexLayoutModule,
    MatButtonModule,
    MatIconModule,
    MatInputModule,
    MatSelectModule,
    MatMenuModule,
    MatTabsModule,
    MatToolbarModule,
    MatButtonModule
  ]

})

export class SharedModule {
}
Run Code Online (Sandbox Code Playgroud)

我在这里错过了什么?目前还不清楚我需要做什么才能满足所需的依赖项。

我如何验证它mat-input是这个模块的一部分?

p4r*_*4r1 3

您可以使用以下 HTML 创建材质输入:

<mat-form-field>
    <input matInput />
</mat-form-field>
Run Code Online (Sandbox Code Playgroud)

或者简单地:

<input matInput/>
Run Code Online (Sandbox Code Playgroud)

Material 中没有<mat-input>元素 - MatInputModule 被导入以使您可以访问该matInput指令。

  • 或者,您可以使用“&lt;mat-input-container&gt;”。 (3认同)