'mat-label' is not a known element Error in latest Angular Material

AngularTypescriptAngular Material

Angular Problem Overview


I got an error in my Angular Material:

compiler.js:466 Uncaught Error: Template parse errors:
'mat-label' is not a known element:
1. If 'mat-label' is an Angular component, then verify that it is part of this module.
2. If 'mat-label' is a Web Component then add 'CUSTOM_ELEMENTS_SCHEMA' to the '@NgModule.schemas' of this component to suppress this message. ("
        </mat-form-field>
        <mat-form-field>
            [ERROR ->]<mat-label>Both a label and a placeholder</mat-label>
            <input matInput placeholder="Simple"): 

Question:

Material Label is under MatFormFieldModule Here's the link

Now, what is the possible cause of the issue why Mat-Label is unknown to Angular Material.

Here is the HTML

> > Both a label and a placeholder > >

Angular Solutions


Solution 1 - Angular

If you have multiple modules make sure you're importing the MatFormFieldModule in every module. It's not sufficient to just import it in the root module.

For example, I have a CommonWidgetsModule which contains some common widgets (my own) and you'll see I'm importing MatFormFieldModule and MatInputModule

// common-widgets.module.ts
import { MatFormFieldModule } from '@angular/material/form-field';
import { MatInputModule } from '@angular/material/input';

@NgModule({
  imports: [
    CommonModule,
    SharedModule,
    RouterModule,

    MatFormFieldModule,
    MatInputModule,

    // import other MatModules...

  ],
  declarations: DECLARATIONS,
  exports: DECLARATIONS
})
export class CommonWidgetsModule { }

Solution 2 - Angular

Could also be that you forgot to add your component in your module (that is already importing MatFormFieldModule and MatInputModule.

Solution 3 - Angular

Make sure that you are importing MatFormFieldModule in 'app.module.ts' or respective module's 'module.ts' file.

@NgModule({ 
  imports: [
    BrowserModule, 
    FormsModule, 
    MatFormFieldModule,
  ],
})

Solution 4 - Angular

in app.module.ts file add

import {FormsModule} from "@angular/forms";

imports:[
FormsModule
]

FormModule Includes all the Fields Related to Form

Solution 5 - Angular

I also found if you use the CLI and say skip-import. This will then result in the component not appear in your module. So it will not reference back to the imports for the mat label.

Solution 6 - Angular

Upgrade @angular/material to "5.2.0" and the problem will go away.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionRandz67View Question on Stackoverflow
Solution 1 - AngularSimon_WeaverView Answer on Stackoverflow
Solution 2 - AngularMatthieu RieglerView Answer on Stackoverflow
Solution 3 - AngularSakshiView Answer on Stackoverflow
Solution 4 - AngularMubeen NaeemView Answer on Stackoverflow
Solution 5 - AngularSukh_BainsView Answer on Stackoverflow
Solution 6 - AngularMateusz StefekView Answer on Stackoverflow