InvalidPipeArgument при использовании автозаполнения материала

Это должно было быть исправлено в .Net 4.0, но Task.Run () новичок в .Net 4.5

.NET 4.5 имеет свою собственную неоднозначность перегрузки, добавляя Task.Run(Func<Task<T>>). И поддержка async / await в C # версии 5. Что позволяет неявное преобразование из T foo() в Func<Task<T>>.

Это синтаксический сахар, который довольно сладок для async / await, но создает полости здесь. Отсутствие ключевого слова async в объявлении метода - это not , рассмотренное в методе перегрузки метода, которое открывает еще одну коробку pandora неудачников, когда программисты забывают использовать async , когда они предназначены для. В противном случае следует обычное соглашение C #, что для выбора метода перегрузки рассматривается только имя метода и аргументы в методе.

Для разрешения неоднозначности требуется явно использовать тип делегата.

0
задан rds80 17 January 2019 в 13:35
поделиться

1 ответ

zipCodes - это труба string[], а async принимает только значение Observable или Promise в качестве входа. Отсюда и ошибка.

Избавьтесь от трубы async из шаблона.

Примерно так:

<form>
  <mat-form-field>
    <input type="text" placeholder="ZipCode" aria-label="ZipCode"
      matInput [formControl]="zipCodeControl" [matAutocomplete]="auto">
      <mat-autocomplete #auto="matAutocomplete">
        <mat-option *ngFor="let zipCode of zipCodes"
          [value]="zipCode">
          {{zipCode}}
        </mat-option>
      </mat-autocomplete>
  </mat-form-field>
</form>
0
ответ дан SiddAjmera 17 January 2019 в 13:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: