J'utilise Angular 4 et Angular Material 2. Pour le code suivant:
<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>
Je reçois une erreur:
Erreurs d'analyse de modèle: 'md-form-field' n'est pas un élément connu : 1. Si 'md-form-field' est un composant angulaire, vérifiez qu'il fait partie de ce module . 2. Si "md-form-field" est un composant Web, ajoutez "CUSTOM_ELEMENTS_SCHEMA" au "@ NgModule.schemas" de ce composant supprimer ce message. ("[ERREUR ->]
Pourriez-vous s'il vous plaît m'aider où je manque?
Voici monapp.module.ts
code où j'ai importé des modules de matériau:
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 { }
METTRE À JOUR:
Depuis 2.0.0-beta.12
, le préfixe md
a été supprimé au profit du préfixe mat
. Voir ceci CHANGELOG pour plus de détails:
Tous les préfixes "md" ont été supprimés. Voir la notification deprecation dans le fichier notes beta.11 pour plus d'informations.
Après la mise à jour, <md-form-field>
doit être remplacé par <mat-form-field>
. De plus, MdFormFieldModule
et MdInputModule
doivent être remplacés par MatFormFieldModule
et MatInputModule
:
import { MatFormFieldModule } from '@angular/material';
import { MatInputModule } from '@angular/material';
@NgModule({
imports: [
....
MatFormFieldModule,
MatInputModule,
....
]
Voici un lien vers StackBlitz demo mis à jour en utilisant 2.0.0-beta.12
.
ORIGINAL:
<md-form-field>
a été introduit dans 2.0.0-beta.10 . Voir ci-dessous la documentation de changelog:
md-input-container a été renommé en md-form-field (tout en restant compatible avec ). L'ancien sélecteur sera supprimé dans une version ultérieure.
Voici un lien pour compléter CHANGELOG .
Pour utiliser le sélecteur <md-form-field>
, assurez-vous que la version 2.0.0-beta.10 du matériel est installée. De plus, vous devez importer le module MdFormFieldModule
dans votre AppModule
importations:
import { MdFormFieldModule } from '@angular/material';
import { MdInputModule } from '@angular/material';
@NgModule({
imports: [
....
MdFormFieldModule,
MdInputModule,
....
]
Pour ceux qui trébuchent sur cette question, voici un lien vers démo de travail sur StackBlitz.
Si vous rencontrez des difficultés pour importer des fichiers, vous pouvez disposer d’une seule méthode d’importation.
Commencez par importer les composants requis dans votre fichier .component.ts.
Et importez le module spécifique dans votre module .module.ts
Et ajoutez-le ensuite dans les importations dans @NgModule ({
imports : [ <Example>Module ]
})
Exemple où vous souhaitez importer des contrôles de formulaire uniquement dans votre application angulaire
1). app.component.ts
`import { FormGroup, FormControl } from '@angular/forms'`
2) app.module.ts
import { FormsModule } from '@angular/forms'
ci-dessous dans app.module.ts dans
@NgModule ({
imports : [ FormsModule ]
})
Vous pouvez utiliser md-input-container comme ceci:
<md-input-container>
<input mdInput name="name" [(ngModel)]="yourModel" class="filter-input-field"/>
</md-input-container>