Tôi đang cố gắng tạo trình xác thực không đồng bộ tùy chỉnh, đi tới máy chủ và kiểm tra xem email đã được đăng ký hay chưa.Http không hoạt động trong xác thực không đồng bộ tùy chỉnh Angular 2
Thật không may, có vẻ như yêu cầu nhận không bao giờ bị sa thải, bởi vì không có gì xảy ra. Tôi đã thử nhiều console.log bên trong subscribe
, nhưng chúng không chạy.
Tôi đã kiểm tra xem yêu cầu đó có hoạt động bên ngoài trình xác thực hay không, và điều đó có nghĩa là không phải vậy.
import { Component } from '@angular/core';
import { FormGroup, FormBuilder, Validators, FormControl } from '@angular/forms';
import { Response, Http } from '@angular/http';
@Component({
templateUrl: 'build/pages/welcome/signup/signup.html',
providers: [AuthService, CustomValidators]
})
export class Signup {
signupForm: FormGroup;
constructor(private formBuilder: FormBuilder, private http: Http) {
this.signupForm = formBuilder.group({
'email': ['', Validators.required, this.checkEmail],
}):
}
checkEmail(control: FormControl): Promise<any> {
const promise = new Promise<any>(
(resolve, reject) => {
this.http.get('/sharealead/main.php?action=checkEmail').subscribe(
(res: Response) => {
console.log('it never gets here');
console.log(res)
if (res.text() == 'already there') {
resolve({'emailTaken': true});
} else {
resolve(null);
}
},
(err) => {
console.log('it never gets here');
console.log(err);
}
)
}
);
return promise;
}
}
Thật vậy, sai lầm ngớ ngẩn, có vẻ như tôi cần thêm một bài học về từ khóa này trong JavaScript (Tôi sẽ đánh dấu câu trả lời của bạn là chấp nhận trong khoảng 8 phút, khi stackoverflow cho phép) –
Bạn được chào đón! Có, việc sử dụng từ khóa 'này' trong JavaScript là một chút cụ thể ... –
Bạn cũng có thể hướng dẫn cách kích hoạt trình xác nhận hợp lệ như vậy trên trường mờ. Trong trường hợp của tôi, yêu cầu gửi http của nó ngay cả khi tôi đang nhập email vào hộp văn bản. Vì vậy, trước khi tôi nhập địa chỉ email của mình, nó đã gửi một số yêu cầu đến máy chủ –