product_id становится неопределенным, когда он не изменяется с помощью anular6 - PullRequest
0 голосов
/ 16 октября 2018

Я отправляю неопределенное product_id: undefined, когда я не изменяю свой product_id.

У меня есть этот HTML-код:

<div class="input-field col s12">
      <input formControlName="product_id" type="text" placeholder="Select Product" aria-label="Number" matInput
        [matAutocomplete]="auto">
      <mat-autocomplete autoActiveFirstOption #auto="matAutocomplete" [displayWith]="displayWith">
        <mat-option (onSelectionChange)="updateForm($event, homebox.product_id, 'product_id')" *ngFor="let homebox of filteredHomebox | async"
          [value]="homebox.serial_number">
          {{homebox.serial_number}}
        </mat-option>
      </mat-autocomplete>
 </div>

в компоненте TS У меня есть:

  homeboxs: Homebox[] = [];
  homebox: Homebox;
  homeboxp: ProductHB;
  productId : 0;
      selectedHomebox: string = this.homeboxs.filter(
        x => x.product_id=== this.homebox.product_id[0])
        .map(y => y.product_id).join('');

      constructor(..) {
        this.homebox = new Homebox('');
        this.editForm= new FormGroup({
          'product_id': new FormControl('', [Validators.required, Validators.nullValidator]),
        });
      }
      ngOnInit() {
        this.populateForm();
        this.hs.homeboxGetall().subscribe(
          homeboxs => {
            this.homeboxs = homeboxs
            let hbb = this.homeboxs.find(x => x.product_id=== this.homeboxp.product_id);
            if (hbb) {
              this.selectedHomebox = hbb.product_id;
            } } );
      }
      populateForm() {
         .....
      homeboxp => {
      this.homeboxp = homeboxp;      
     this.editForm.controls['product_id'].setValue(homeboxp.serial_number);
    .....
            } );
      }
      onEditP() {
        let newHbp = this.editForm.value;
        newHbp.product_id= this.productId;
        let editHomeboxP = new ProductHB(newHbp);
        this.editForm.value.product_id= this.selectedHomebox;
        this.ws.update(editHomeboxP).subscribe(
          result => {
          ....
          } );
      }

      updateForm(ev: any, idd: any, componentid: any, index) {
        if (ev.isUserInput) {
          if (componentid === 'product_id') {
            this.productId= idd;
            this.editForm['controls']['product_id'].setValue(ev.source.value);
          } else {
            console.log('error');
          }
        }
      }

В этом коде, только проблема в этой строке

 onEditHomeboxP() {
       .....
        this.editForm.value.product_id= this.selectedHomebox;
      ...
      }

Отображение не определено, но на самом деле this.selectedHomebox имеет идентификатор продукта.

Я хочу отправить идентификатор продукта, когда я изменю или нет этот продукт.

Любая идея, пожалуйста?

...