角度上下文绑定

时间:2018-07-07 22:57:16

标签: angular typescript

你好,我可能对上下文函数绑定有疑问。

这是我的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大约在某个时间之前工作过,并且效果很好-现在我不知道该怎么办-我尝试了其他一些绑定,但未获得预期的结果。有人可以帮忙吗?

0 个答案:

没有答案