我正在使用 angular4-material-table 。在那里我尝试添加自定义输入验证我已经创建了单独的验证器服务在那里我调用了自定义函数来根据 api 结果访问我的 api 它将抛出输入有效与否。
这是我的代码,任何人都可以建议我犯了什么错误,
import { Injectable } from '@angular/core';
import { FormGroup, FormControl, Validators } from '@angular/forms';
import { ValidatorService } from 'angular4-material-table';
import { AbstractControl } from '@angular/forms';
import { ApiCallService } from 'api.service';
@Injectable()
export class MatTableValidatorService implements ValidatorService {
constructor( private api_call: ApiCallService) {
}
getRowValidator(): FormGroup {
return new FormGroup({
'name': new FormControl(null, [Validators.required, this.nameValidator]),
});
}
nameValidator(control: AbstractControl): { [key: string]: boolean } | null {
this.api_call
.api_function(parameter)
.subscribe(data => {
const arrayVal = data.response;
if(arrayVal.length > 0)
{
return {'dnsCheck': true}
}
return null;
});
return null;
}
}
这个返回错误:无法读取 api_call 的属性,即使我在构造函数中声明了它
另一种方式:
public nameValidator = (control: AbstractControl) => {
this.api_call
.api_function(parameter)
.subscribe(data => {
const arrayVal = data.response;
if(arrayVal.length > 0)
{
return {'dnsCheck': true}
}
return null;
});
};
这种方式有效,但即使输入有效或无效,它总是会引发错误。我已经用控制台检查了输出,似乎从 api 得到的结果是完美的。谁能帮助我我的错误是什么。提前致谢。