I am working on user registration form in Angular 4. My RestApi is working fine. I have tried using postman. I dont know why the form is not being post.
I get following error in console header:
Request Method: OPTIONS
Status Code: 405 Method Not Allowed
I have tried the following code.
register.component.html
<form (ngSubmit)="onRegister(userForm)" #userForm="ngForm">
<div class="form-group">
<label for="email">Email</label>
<input type="text" class="form-control" id="email" placeholder="enter email" [(ngModel)]="user.email" name="email" #email = "ngModel" pattern="[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,3}$" required>
<div *ngIf="email.invalid && (email.dirty || email.touched)"
class="alert alert-danger">
<div *ngIf = "email.errors?.required">Email field can't be blank</div>
<div *ngIf = "email.errors?.pattern && email.touched">The email id doesn't seem right</div>
</div>
</div>
<div class="form-group">
<button type="reset" class="btn btn-default">Cancel</button>
<button type="submit" class="btn btn-primary" [disabled]="!userForm.form.valid">Submit</button>
</div>
</form>
register.component.ts
export class RegisterComponent implements OnInit {
private user: User;
userForm: FormGroup;
// constructor(private auth: AuthService, private http: Http) {}
constructor(private _fb: FormBuilder, private auth: AuthService, private http: Http) { } // form builder simplify form initialization
ngOnInit() {
this.user = new User({
email:"",
password: { password: "" , confirmPassword: ""},
})
}
onRegister(): void {
console.log("this is me", this.user);
this.auth.register(this.user)
.then((user) => {
// console.log(user.json());
})
.catch((err) => {
console.log(err);
});
}
}
auth.service.ts
@Injectable()
export class AuthService {
private BASE_URL: string = 'http://myapp.local/public_html';
private headers: Headers = new Headers({'Content-Type': 'application/json'});
constructor(private http: Http) {}
// register = function(user) {
register(user): Promise<any> {
console.log("This is registration page service", user);
let url: string = `${this.BASE_URL}/user`;
console.log("url", url);
return this.http.post(url, user).toPromise();
}
}