41
votes

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

<mat-form-field>
          <mat-label>Both a label and a placeholder</mat-label>
          <input matInput placeholder="Simple placeholder">
</mat-form-field>
4
Did you check your app settings and if you're importing CUSTOM_ELEMENTS_SCHEMA in app.module.ts? This should fix the issue and remove the error. import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core'; and then schemas: [ CUSTOM_ELEMENTS_SCHEMA ], in @NgModule({...., schemas: [ CUSTOM_ELEMENTS_SCHEMA ]}) - k.vincent
@k.vincent, that works, but it shouldn't require that. Updating Angular is full day work :( guys, you can do better - greengold

4 Answers

50
votes

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 { }
0
votes

in app.module.ts file add

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

imports:[ FormsModule ]

FormModule Includes all the Fields Related to Form

-1
votes

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

-1
votes

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.