그래서, 작동하려면이 양식이 필요합니다. 하지만 각도 응용 프로그램을 실행할 때마다 빈 페이지 만 표시됩니다. 양식이 표시되는 페이지
재미있는 점은 < form [formGroup] = "registerForm"(ngSubmit) = "onSubmit ()">
줄을 편집 할 때마다 다음과 같이 남겨 두는 것입니다. < form (ngSubmit) = "onSubmit ()">
, 양식이 나타나지만 등록 button이 작동하지 않습니다.
내 HTML 양식은 다음과 같습니다.
<div class="wrapper">
<div class="page-header" style="background-image: url('./assets/img/login-image.jpg');">
<div class="filter"></div>
<div class="container">
<div class="row">
<div class="col-lg-4 col-sm-6 mr-auto ml-auto">
<div class="card card-register">
<h3 class="title">Registre-se na MPG!</h3>
<form [formGroup]="registerForm" (ngSubmit)="onSubmit()">
<label for="firstName">Nome</label>
<div class="input-group form-group-no-border">
<div class="input-group-prepend">
</div>
<input type="text" id="firstName" class="form-control" placeholder="Nome" (focus)="focus=true" (blur)="focus=false" [ngClass]="{ 'is-invalid': submitted && f.firstName.errors }" />
</div>
<div *ngIf="submitted && f.firstName.errors" class="invalid-feedback">
<div *ngIf="f.firstName.errors.required">O primeiro nome é obrigatório.</div>
</div>
<label for="lastName">Sobrenome</label>
<div class="input-group form-group-no-border" [ngClass]="{'input-group-focus':focus===true}">
<div class="input-group-prepend">
</div>
<input type="text" id="lastName" class="form-control" placeholder="Sobrenome" (focus)="focus=true" (blur)="focus=false">
</div>
<div *ngIf="submitted && f.lastName.errors" class="invalid-feedback">
<div *ngIf="f.lastName.errors.required">O sobrenome é obrigatório.</div>
</div>
<label for="bday">Data de Nascimento</label>
<div class="input-group form-group-no-border" [ngClass]="{'input-group-focus':focus===true}">
<div class="input-group-prepend">
</div>
<input type="date" id="bday" class="form-control" (focus)="focus=true" (blur)="focus=false">
</div>
<div *ngIf="submitted && f.bday.errors" class="invalid-feedback">
<div *ngIf="f.bday.errors.required">A data de nascimento é obrigatório.</div>
</div>
<label for="email">Email</label>
<div class="input-group form-group-no-border" [ngClass]="{'input-group-focus':focus===true}">
<div class="input-group-prepend">
<span class="input-group-text">
<i class="nc-icon nc-email-85"></i>
</span>
</div>
<input type="text" id="email" class="form-control" placeholder="Email" (focus)="focus=true" (blur)="focus=false" >
<div *ngIf="submitted && f.email.errors" class="invalid-feedback">
<div *ngIf="f.email.errors.required">O e-mail é obrigatório.</div>
</div>
</div>
<label for="password">Senha</label>
<div class="input-group form-group-no-border" [ngClass]="{'input-group-focus':focus1===true}">
<div class="input-group-prepend">
<span class="input-group-text">
<i class="nc-icon nc-key-25"></i>
</span>
</div>
<input type="password" id="password" class="form-control" placeholder="Senha" (focus)="focus1=true" (blur)="focus1=false" >
</div>
<div *ngIf="submitted && f.password.errors" class="invalid-feedback">
<div *ngIf="f.password.errors.required">Uma senha é obrigatória.</div>
<div *ngIf="f.password.errors.minlength">A senha deve possuir no mínimo 6 caracteres.</div>
</div>
<button type="submit" [disabled]="loading" class="btn btn-danger btn-block btn-round">
<span *ngIf="loading" class="spinner-border spinner-border-sm mr-1"></span>
Registre-se
</button>
</form>
<div class="forgot">
<a href="#" class="btn btn-link btn-danger">Esqueceu sua senha?</a>
</div>
</div>
</div>
</div>
<div class="footer register-footer text-center">
<h6>©{{test | date: 'yyyy'}}, feito com <i class="fa fa-heart heart"></i> pela MPG</h6>
</div>
</div>
</div>
</div>
내 signup.component.ts :
import { Component, OnInit } from '@angular/core';
import { Router } from '@angular/router';
import { FormBuilder, FormGroup, Validators, FormControl } from '@angular/forms';
import { first } from 'rxjs/operators';
import { AlertService, UserService, AuthenticationService } from 'app/components/services';
@Component({
selector: 'app-signup',
templateUrl: './signup.component.html',
styleUrls: ['./signup.component.scss']
})
export class SignupComponent implements OnInit {
test : Date = new Date();
focus;
focus1;
registerForm: FormGroup;
loading = false;
submitted = false;
constructor(
private formBuilder: FormBuilder,
private router: Router,
private authenticationService: AuthenticationService,
private userService: UserService,
private alertService: AlertService
) {
// redirect to home if already logged in
if (this.authenticationService.currentUserValue) {
this.router.navigate(['/']);
}
}
ngOnInit() {
this.registerForm = this.formBuilder.group({
firstName: ['', Validators.required],
lastName: ['', Validators.required],
email: ['', Validators.required],
password: ['', [Validators.required, Validators.minLength(6)]]
});
}
// convenience getter for easy access to form fields
get f() { return this.registerForm.controls; }
onSubmit() {
this.submitted = true;
// reset alerts on submit
this.alertService.clear();
// stop here if form is invalid
if (this.registerForm.invalid) {
return;
}
this.loading = true;
this.userService.register(this.registerForm.value)
.pipe(first())
.subscribe(
data => {
this.alertService.success('Registro feito com sucesso!', true);
this.router.navigate(['/login']);
},
error => {
this.alertService.error(error);
this.loading = false;
});
}
}