I'm trying to write a registration form using Angular 6 with Django backend and I'm facing these problems:
Uncaught Error: Template parse errors:
Can't bind to 'formGroup' since it isn't a known property of 'form'. (" < h2>Login
][formGroup]="loginForm" (ngSubmit)="onSubmit()">
<label for="use"): ng:///AppModule/LoginComponent.html@1:6at syntaxError (compiler.js:215)
my code is here:
login.component.ts:
export class LoginComponent implements OnInit {
loginForm: FormGroup;
loading = false;
submitted = false;
returnUrl: string;
constructor(private Auth: AuthService,
private alertService: AlertService,
private formBuilder: FormBuilder,
private route: ActivatedRoute,
private router: Router) {
}
ngOnInit() {
this.loginForm = this.formBuilder.group({
username: ['', Validators.required],
password: ['', Validators.required]
});
// reset login status
this.Auth.logout();
// get return url from route parameters or default to '/'
this.returnUrl = this.route.snapshot.queryParams['returnUrl'] || '/';
}
// convenience getter for easy access to form fields
get f() {
return this.loginForm.controls;
}
onSubmit() {
this.submitted = true;
// stop here if form is invalid
if (this.loginForm.invalid) {
return;
}
this.loading = true;
this.Auth.login(this.f.username.value, this.f.password.value)
.pipe(first())
.subscribe(
data => {
this.router.navigate([this.returnUrl]);
},
error => {
this.alertService.error(error);
this.loading = false;
});
}
}
login.component.html:
<h2>Login</h2>
<form [formGroup]="loginForm" (ngSubmit)="onSubmit()">
<div class="form-group">
<label for="username">Username</label>
<input type="text" formControlName="username" class="form-control" [ngClass]="{ 'is-invalid': submitted && f.username.errors }" />
<div *ngIf="submitted && f.username.errors" class="invalid-feedback">
<div *ngIf="f.username.errors.required">Username is required</div>
</div>
</div>
<div class="form-group">
<label for="password">Password</label>
<input type="password" formControlName="password" class="form-control" [ngClass]="{ 'is-invalid': submitted && f.password.errors }" />
<div *ngIf="submitted && f.password.errors" class="invalid-feedback">
<div *ngIf="f.password.errors.required">Password is required</div>
</div>
</div>
<div class="form-group">
<button [disabled]="loading" class="btn btn-primary">Login</button>
<img *ngIf="loading" src="Img_Link_Here" />
<a [routerLink]="['/create_user']" class="btn btn-link">Register</a>
</div>
</form>
I'm angular beginner, what am I doing wrong?