角度2では、独自のカスタムバリデーターを作成しようとしています。Angular2カスタムバリデーター(依存関係あり)
バリデータインターフェイスを実装する独自のCustomValidatorsクラスを作成しました。
import { FormControl } from "@angular/forms";
import { MyhttpService } from "./myhttp.service";
import { Response } from "@angular/http";
import { Injectable, Directive } from '@angular/core';
@Injectable()
export class CustomValidators{
constructor(private _http : MyhttpService){
}
public api(c : FormControl)
{
// Run
this._http.get("/expenses/email?email=" + c.value).subscribe((res:Response) => {
if(res.status === 200){
// email exists
return null;
} else {
return {"email" : true}
}
});
}
apiを静的メソッドにすると、クラスを正常に使用できます。
this._formDetails = fb.group({
"managerEmail" : ["", [Validators.required, CustomValidators.api] ]
});
もちろん、これは静的メソッドなので、コンストラクタが実行されていないため、コンストラクタの値にアクセスすることはできません。
したがって、依存性を持つカスタムバリデーターを実装する方法が見つからないため、方法が必要です。
私のクラスがクラスのインスタンス化されたオブジェクトを受け取るようにCustomValidatorsをプロバイダとしてリストしてみました。
プロパティ「API」タイプに存在しません「typeof演算CustomValidators」
は、私が正しい方法でクラスを提供するのですか?なぜメソッドが存在しないのですか?
私は同じ問題を解決していますか? –