как исправить ошибку TS2769: этому вызову не соответствует ни одна перегрузка - PullRequest
0 голосов
/ 26 мая 2020

Я новичок в angular ... Я получаю это исключение для следующего кода, и меня это расстраивает.

Сообщение об ошибке:

ошибка TS2769: этому вызову не соответствует ни одна перегрузка. Последняя перегрузка вызвала следующую ошибку. Аргумент типа «City []» не может быть назначен параметру типа «Promise». В типе "City []" отсутствуют следующие свойства типа "Promise": затем catch, [Symbol.toStringTag], наконец,

Это мой класс:

export class City{
    cityId:number;
    cityName:string; }

и это typeScript:

export class AddFlightComponent implements OnInit {
  cities:City[]=[];
  filteredOptionsD: Observable<City[]>;

  addFlightForm:FormGroup=new FormGroup({
    destinationName:new FormControl()
  });

  private _filterD(value: string): City[] {
    const filterValueD = value.toLowerCase();
    return this.cities.filter(option => option.cityName.toLowerCase().indexOf(filterValueD) === 0);
  }

func()
{
  this.filteredOptionsD = this.addFlightForm.controls['destinationName'].
  valueChanges
  .pipe(
    startWith(''),
    map(value => this._filterD(value))
  );
}

, а это мой html:

<mat-form-field>
  <input type="text" placeholder=" עיר יעד" aria-label="Number" matInput formControlName="destinationName" [matAutocomplete]="auto">
  <mat-autocomplete autoActiveFirstOption #auto="matAutocomplete">
    <mat-option *ngFor="let cityDestination of cities | async" [value]="cityDestination.cityId">
      {{cityDestination.cityName}}
    </mat-option>
  </mat-autocomplete>

1 Ответ

1 голос
/ 26 мая 2020

, поскольку cities не является ни обещанием, ни наблюдаемым, асинхронный c канал не может быть использован

<mat-option *ngFor="let cityDestination of cities | async" [value]="cityDestination.cityId">

// correct
<mat-option *ngFor="let cityDestination of cities" [value]="cityDestination.cityId">

, поэтому вы должны либо удалить асинхронный c канал, либо привязать его к чему-то это asyn c как наблюдаемое

...