I am trying to add an error message to my user name and password input but something goes wrong can anyone help me? am I using the mat error wrong or should I use something else for an error message
this is my HTML -
<form class="form-horizontal form-simple" action="index.html" novalidate (submit)="doLogin(loginForm)" #loginForm="ngForm">
<fieldset class="form-group position-relative has-icon-left mb-0">
<input type="text" class="form-control form-control-lg" id="user-name" name="user_name" [(ngModel)]="user_name" placeholder="Your Username" required #userName="ngModel">
<mat-error *ngIf="userName.invalid">pleas enter a valied user name</mat-error>
<div class="form-control-position">
<i class="ft-user"></i>
</div>
</fieldset>
<fieldset class="form-group position-relative has-icon-left">
<input type="password" name="user_password" [(ngModel)]="user_password" class="form-control form-control-lg" id="user-password" placeholder="Enter Password" required #password="ngModel">
<mat-error *ngIf="password.invalid">pleas enter password</mat-error>
<div class="form-control-position">
<i class="fa fa-key"></i>
</div>
</fieldset>
<div class="form-group row">
<div class="col-md-6 col-12 text-center text-md-left">
<fieldset>
<input type="checkbox" id="remember-me" class="chk-remember">
<label for="remember-me"> Remember Me</label>
</fieldset>
</div>
<div class="col-md-6 col-12 text-center text-md-right"><a href="recover-password.html" class="card-link">Forgot Password?</a></div>
</div>
<button type="submit" class="btn btn-primary btn-lg btn-block" (click)="doLogin()"><i class="ft-unlock"></i> Login</button>
</form>
and this is my component ts file I have connected it to my database and everything works very well with the application but the only thing is not working with me is adding the mat error
import { Component, OnInit } from '@angular/core';
import { Observable } from 'rxjs/Observable';
import { FlashMessagesService } from 'angular2-flash-messages';
import { AngularFireAuth } from '@angular/fire/auth';
import { NgForm } from "@angular/forms";
import { FormControl, Validators } from '@angular/forms';
import { Router } from '@angular/router';
@Component({
selector: 'app-login',
templateUrl: './login.component.html',
styleUrls: ['./login.component.css']
})
export class LoginComponent implements OnInit {
user_name: string = '';
user_password: string = '';
constructor(private fire: AngularFireAuth, private router: Router, public flashMessagesService: FlashMessagesService) {}
ngOnInit() {}
doLogin(form: NgForm) {
if (form.invalid) {
return;
}
// user_name: form.value.user_name;
// user_password: form.value.user_password;
this.fire.auth.signInWithEmailAndPassword(this.user_name, this.user_password).then(user => {
this.router.navigate(['home'])
}).catch(error => {
console.error(error)
})
}
}
and this is my app.moudle -
import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { FormsModule } from '@angular/forms';
import { AppComponent } from './app.component';
import { LoginComponent } from './login/login.component';
import { RouterModule, Routes } from '@angular/router'; //import { NgForm } from '@angular/forms'; import {BrowserAnimationsModule} from '@angular/platform-browser/animations';
import { FlashMessagesModule } from 'angular2-flash-messages';
@NgModule({
declarations: [
AppComponent,
LoginComponent,
NewaccountComponent,
HomeComponent,
NavbarComponent,
LeftbarComponent,
FooterComponent
],
imports: [
BrowserModule,
RouterModule.forRoot(routes),
FormsModule,
BrowserAnimationsModule,
BrowserModule,
AngularFireModule.initializeApp(environment.firebase), // imports firebase/app needed for everything
AngularFireAuthModule, // imports firebase/auth, only needed for auth features,
FlashMessagesModule.forRoot()
],
providers: [AngularFireDatabase],
bootstrap: [AppComponent]
})
export class AppModule {}
and the error i am having at the browser side is
Uncaught (in promise) Error: Template parse errors: 'mat-error' is not a known element:
1. If 'mat-error' is an Angular component, then verify that it is part of this module.
2. If 'mat-error' is a Web Component then add 'CUSTOM_ELEMENTS_SCHEMA' to the '@NgModule.schemas' of this component to suppress this message. ("older="Your Username"
required #userName="ngModel">
[ERROR ->]<mat-error *ngIf="userName.invalid">pleas enter a valied user name</mat-error>
"): ng:///AppModule/LoginComponent.html@58:24 'mat-error' is not a known element:
1. If 'mat-error' is an Angular component, then verify that it is part of this module.
2. If 'mat-error' is a Web Component then add 'CUSTOM_ELEMENTS_SCHEMA' to the '@NgModule.schemas' of this component to suppress this message. ("lder="Enter Password"
required #password="ngModel">
[ERROR ->]<mat-error *ngIf="password.invalid">pleas enter password</mat-error>
<div cla"):
pleas tell me what to do ??
When you have such errors, the meaning is that you haven't imported the correct module in your app.module.ts
.
Have you import MatFormFieldModule
?
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With