你好,我可能对上下文函数绑定有疑问。
这是我的AddDialogComponent,其中包含一个FormGroup,其中的代码FormControl由注入的ProductValidator验证:
constructor(
public productValidator: ProductValidator,
//.....
code = new FormControl('', [
this.productValidator.validateCodeLength.bind(this.productValidator),
this.productValidator.validateCodeUnique.bind(this.productValidator)]);
ProductValidator的功能:
validateCodeUnique(input: FormControl) {
const code: string = input.value;
let isUnique = true;
this.productService.getAllProducts().forEach((product, key) => {
console.log(product);
if (product.code === code) {
isUnique = false;
}
});
return isUnique ? null : { notUnique: true };
}
这里getAllProducts()
返回空的地图,但在productService内显示5个元素。 fillMapProducts在初始化时被调用,console.log
在地图内部有5个项目,但是稍后当我在ProductValidator中调用getAllProducts()
时,它显示地图为空
fillMapProducts(products: ProductAdmin[]): ProductAdmin[] {
products.forEach(product => this.allProducts.set(product.id, product));
console.log(this.allProducts(); // 5 elements
}
getAllProducts(): Map<number, ProductAdmin> {
return this.allProducts; // empty map when called inside ProductValidator
}
我asked大约在某个时间之前工作过,并且效果很好-现在我不知道该怎么办-我尝试了其他一些绑定,但未获得预期的结果。有人可以帮忙吗?