【发布时间】:2019-03-12 00:26:36
【问题描述】:
我正在尝试访问我的服务以检查验证器,但我得到的只是充满错误的控制台我确定我只是对语法内容不满意 =/
验证者:
import { DataService } from './services/data.service';
import { AbstractControl, FormGroup } from '@angular/forms';
export function titleValidator(control: AbstractControl,dataService:DataService) {
console.log(dataService.moviesArray) -->> How can I access this service?
if (control && (control.value !== null || control.value !== undefined)) {
if (control.value=="test") {
return {
isError: true
};
}
}
return null;
}
组件:
this.movieForm = this.fb.group({
title: ['', [Validators.required,titleValidator]],
...
});
}
如果有人有另一种解决方案来在组件本身中进行自定义验证,我希望得到任何帮助.. 谢谢!
更新:错误:
AddMovieComponent_Host.ngfactory.js? [sm]:1 ERROR TypeError: Cannot read property 'moviesArray' of undefined
at titleValidator (validator.ts:8)
at forms.js:602
at Array.map (<anonymous>)
at _executeValidators (forms.js:602)
at FormControl.validator (forms.js:567)
at FormControl.push../node_modules/@angular/forms/fesm5/forms.js.AbstractControl._runValidator (forms.js:2510)
at FormControl.push../node_modules/@angular/forms/fesm5/forms.js.AbstractControl.updateValueAndValidity (forms.js:2486)
at new FormControl (forms.js:2794)
at FormBuilder.push../node_modules/@angular/forms/fesm5/forms.js.FormBuilder.control (forms.js:5435)
at FormBuilder.push../node_modules/@angular/forms/fesm5/forms.js.FormBuilder._createControl (forms.js:5473)
【问题讨论】:
-
请显示错误。并确保您已在您正在使用的组件或 module.ts 中提供服务
-
@AliShahbaz 添加了
-
很明显
moviesArray是undefined,因为您还没有在服务中定义moviesArray或初始化。 -
只有在我尝试在此验证器中使用它时才未定义。所有其他地方都初始化了。就像我试图进入那里,我就是不能。例如,即使我在尝试访问它时在数据服务中初始化了一个字符串对象,它也会显示未定义
标签: javascript angular typescript validation