Как получить массив результатов при использовании автозаполнения в Angular 6 - PullRequest
0 голосов
/ 11 октября 2018

Я хочу создать массив с идентификатором продуктов.

У меня есть такая форма:

this.myform= new FormGroup({
  'products_id': this.fb.array([], Validators.required),
  'unit_price': new FormControl('', [Validators.required)
});

Моя функция отправки:

  onAddProducts() {
    this.areWeWaiting = true;
    let newp = this.myform.value
    let newprod= new Products(
      newp
    );
    this.ws.createP(newprod).subscribe(
      result => {
        if (result === true) {
        } else {
          this.areWeWaiting = false;
        }
      },
      error => {
        this.areWeWaiting = false;
      }
    );
  }

Результат отэтот код является этим массивом: ["Y4FQS", "qOKTN", "sRm54"]

Я хочу получить такой результат: ["1", "2", "3"] Я хочу отправить идентификатор продукта, а не название продукта.

Для этого я пытаюсьчтобы изменить мой код следующим образом:

Я объявляю свойство prodId: Array<string>[]; и в функции submit:

 onAddProducts() {
    this.areWeWaiting = true;
    let newp = this.myform.value
    newp.products_id= this.prodId;
    let newprod= new Products(
      newp
    ); ........}

Этот продукт я принимаю в форме этой функции:

  updateForm(ev: any, idd: any, componentid: any) {
    if (ev.isUserInput) {
      if (componentid === 'products_id') {
        this.prodId = idd;
         this.myForm['controls']['products_id'].setValue(ev.source.value);
      } else {
        console.log('ooops');
      }
    }
  }

Это функция, которая получает весь продукт из API:

    this.ws.getAllproducts().subscribe(
      products=> {
        this.products= products.map((prod) => {
          this.filteredProducts = this.myForm.controls['products_id'].valueChanges
            .pipe(
              startWith(''),
              map(value => this._filters(value))
            );
          return new Products(prod);

        });
      }
    );

эта функция возвращает:

{
    "StatusCode": 0,
    "StatusMessage": "OK",
    "StatusDescription": [
        {
            "products_id": "1",
            "products_name": "PkMGo",
            "unit_price": 100,
        },
        {
            "products_id": "2",
            "products_name": "Y4FQS",
            "unit_price": 100,
        },
        {
            "products_id": "3",
            "products_name": "Mlld0",
            "unit_price": 100,
        },
        {
            "products_id": "4",
            "products_name": "q0KTN",
            "unit_price": 100,
        },...
   ]
}

Этот код показывает мне только идентификатор последнего продукта, например "3"

Можете ли вы спросить меня, пожалуйста, как разместить массив, как ["1", "2", "3"]

Спасибо!

...