1. Thậm chí có được hỗ trợ bởi Angular chưa? thấy this mở vấn đềCách triển khai Trình xác thực không đồng bộ hóa tùy chỉnh trong Angular2/4/5
2. Nếu có, sau đó những gì là sai trong các mã dưới đây
export class someClass{
myForm:ControlGroup;
constructor(public http:Http, public formBuilder:FormBuilder)
this.myForm = formBuilder.group({
ImageId: ["", Validators.required, this.asynValidator]
});
asyncValidator(control: Control): {[key: string]: any} {
return new Promise (resolve => {
let headers = new Headers();
headers.append('Content-Type', 'application/json');
this.http.get('http://localhost/ImageIdValidate?id='+ control.value, {headers:headers})
.map(res => res.json())
.subscribe(data => {
console.log(data);
if(data != null) {
resolve({"duplicate": true})
}
else resolve(null);
})
});
});
}
}
Nó thậm chí không thực hiện một yêu cầu máy chủ.
Thực tế, đó là cách JavaScript hoạt động. Khi bạn tham khảo một phương pháp bạn mất đối tượng nó được gắn vào. Bạn có thể ép buộc điều này bằng cách sử dụng phương thức liên kết ... –
Khi tôi bắt đầu nghĩ rằng tôi đang trên đường trở thành PRO một ngày nào đó, những thứ như thế này làm tôi cười. Nhưng dù sao, là [câu hỏi này] (http://stackoverflow.com/questions/20279484/how-to-access-the-correct-this-context-inside-a-callback) có liên quan? –
Trong thực tế, OOP trong JavaScript khác với các ngôn ngữ như Java và C++. Với từ khóa lớp, bạn không thực sự định nghĩa các lớp "đúng" như với các ngôn ngữ. JavaScript sử dụng OOP dựa trên nguyên mẫu. Có câu hỏi bạn trích dẫn có liên quan đến vấn đề này. –