首页 > 解决方案 > Angular 7 ERROR TypeError:无法读取未定义的属性“管道”

问题描述

嗨,我对 Angular 非常陌生,正在尝试使用 customfilters 实现自动完成,但遇到了与管道相关的错误,无法从过去 3 天找到解决方案。有人可以帮我解决这个问题吗

<mat-form-field class="col-12 col-sm-6">
    <mat-label class="padding">Units</mat-label>
    <mat-select formControlName="unit" [(value)]="selected"  required style="padding-left: 10px;">
        <mat-option *ngFor="let list of unitsList | async" [value]="list.codename">{{list.codevalue}}</mat-option>
    </mat-select>
    <mat-error *ngIf="getvalue1.unit.errors">{{getunitErrorMessage()}}</mat-error>
</mat-form-field>

我的 ts 文件:

 ngOnInit() {
    //
    this.projectservice.getInventoryProjectsList().subscribe(
      data => {
       this.projectsList2 = data;
      }
    );

    // for inventory dropdown
    this.inventory.getInvDropdown().subscribe(
      data => {

        this.unitsList = data['units'];
        console.log(this.unitsList);
        // tslint:disable-next-line:no-string-literal

      }
    );
    this.formBuilderOnDemand();
    this.filter();

  }
  // // for filter
  filter() {
    this.filteredOptions = this.addInventoryForm.value.itemName.valueChanges
    .pipe(    // Error line 
      startWith(''),
      map(value => this._filter(value))
    );
  }

  // for search in item name
  private _filter(value: any): any[] {
    const filterValue = value.toLowerCase();
    return this.materialList.filter(list => list.toLowerCase().includes(filterValue));
  }

标签: angularasynchronouspipe

解决方案


您在unitsList | asyncHTML 上使用,但unitsList已经是一个数组,async管道旨在用于异步类型(即ObservablePromise

不确定这是否会使您的代码完全正常工作,但我认为这将解决您现在遇到的错误

编辑

从您的编辑中,您尝试订阅(我认为是) a 的值FormControl,您需要订阅 FormControl 的值更改。

this.myForm.get('myFormControl').valueChanges.subscribe(val => {
  //Do something when "myFormControl" value changes
});

推荐阅读