你好,我不明白为什么注射不当。它引发此错误:
无法读取未定义的“ProductService”属性
在product validator.validatecodeunique(product validator.ts:23)
@Injectable()
export class ProductValidator {
constructor(public productService: ProductService) { }
validateCodeUnique(input: FormControl) {
const code: string = input.value;
let isUnique = true;
this.productService.getAllProducts().forEach((product, key) => {
if (product.code === code) {
isUnique = false;
}
});
return isUnique ? null : { notValid: true };
}
}
validateCodeLength(input: FormControl) {
const codeLength: number = input.value.length;
const hasIncorrectLength = codeLength < 1 || codeLength > 10;
return hasIncorrectLength ? null : { notValid: true };
}
ProductService还注释为
Injectable
以下内容:
@Injectable()
export class ProductService {
...
}
我在模块的提供者中声明了:
providers: [ProductService, ProductValidator]
我从另一个模式窗口调用验证器:
export class AddDialogComponent {
code = new FormControl('', [this.productValidator.validateCodeLength, this.productValidator.validateCodeUnique]);
constructor(public dataService: ProductService,
public productValidator: ProductValidator)
...
}
validateCodeLength
工作正常,有人知道为什么没有注入ProductService吗?我在另一个组件中注入ProductService,它工作得很好。不知道我在这里错过了什么