@ViewChild ('tTaskTeam', {читайте: MatAutocompleteTrigger}) не работает после обновления до V8

Привет, я обновил свой проект с V7 до V8 сегодня вечером, и у меня возникла куча ошибок при чтении @viewChild, которые были связаны с новыми обновлениями, которые они сделали. Я добавил {static: true} ко всем своим @viewChild, но потом наткнулся на триггеры, которые настроил следующим образом:

 @ViewChild('tTaskTeam', { read: MatAutocompleteTrigger }) autoCompleteForTaskTeamTrigger: MatAutocompleteTrigger;
  @ViewChild('tofficeUser', { read: MatAutocompleteTrigger }) officeUsersautoCompleteInputTrigger: MatAutocompleteTrigger;
  @ViewChild('recipientType', { read: MatAutocompleteTrigger })  recipientTypeTrigger: MatAutocompleteTrigger;

viewChild принимает только два параметра, и я не могу добавить три. Итак, я взял read: MatautocompleteTrigger, и это сломало мою функцию автозаполнения, которая у меня была.

Я получаю следующее сообщение об ошибке:

Аргумент типа '{read: typeof MatAutocompleteTrigger; } 'не может быть назначен параметру типа' {read ?: any; статический: логический; } '. Свойство 'static' отсутствует в типе '{read: typeof MatAutocompleteTrigger; } 'но обязательно по типу' {читать ?: любой; статический: логический; } '. ts (2345) core.d.ts (8066, 9): здесь объявлено' static '.

Я добавил эти триггеры для срабатывания, если пользователь вводит символы, которых нет в выбранном списке опций. Таким образом, он очистится и даст пользователю сообщение, чтобы он снова сделал выбор.

Это полная реализация: HTML

<mat-form-field appearance="outline" class="task-info-form-field">
  <input tab-directive #tTaskTeam matInput (keyup.enter)="chooseFirstOption(autoCompleteForTaskTeam)" [matAutocomplete]="autoCompleteForTaskTeam" formControlName="tTaskTeam" matTooltip="You can search and it will try to autocomplete the name for you!" placeholder="Select Group">
  <mat-autocomplete #autoCompleteForTaskTeam='matAutocomplete' [displayWith]="displayTeamName">
    <mat-option class="matAutoCompleteSelect" *ngFor="let user of filteredOptions | async" [value]="user">
      <span>{{ user.TeamName }}</span>
    </mat-option>
  </mat-autocomplete>
  <mat-error>
    Value entered is NOT VALID please selected only from suggested values.
  </mat-error>
</mat-form-field>

TS

@ViewChild(MatAutocomplete, {
  static: true
}) autoCompleteForTaskTeam: MatAutocomplete;

@ViewChild('tTaskTeam', {
  read: MatAutocompleteTrigger
}) autoCompleteForTaskTeamTrigger: MatAutocompleteTrigger;

subscriptionTeam: Subscription;

ngAfterViewInit() {
  this._subscribeToClosingActions();
  this._subscribeToClosingActionsThree();
  this._subscribeToClosingActionsTwo();
}

ngOnDestroy() {
  if (this.subscription && !this.subscription.closed) {
    this.subscription.unsubscribe();
  }
  if (this.subscriptionTeam && !this.subscriptionTeam.closed) {
    this.subscriptionTeam.unsubscribe();
  }
  if (this.subscriptionUser && !this.subscriptionUser.closed) {
    this.subscriptionUser.unsubscribe();
  }
}


private _subscribeToClosingActions(): void {
  if (this.subscriptionTeam && !this.subscriptionTeam.closed) {
    this.subscriptionTeam.unsubscribe();
  }

  this.subscriptionTeam = this.autoCompleteForTaskTeamTrigger.panelClosingActions
    .subscribe(e => {

        if (!e || !e.source) {
          this.form.controls.tTaskTeam.setValue('');
        }
      },
      err => this._subscribeToClosingActions(),
      () => this._subscribeToClosingActions());
}

person elquesogrand    schedule 17.06.2019    source источник


Ответы (2)


Наверное должно быть

@ViewChild ('tTaskTeam', {читать: MatAutocompleteTrigger, static: false}) autoCompleteForTaskTeamTrigger: MatAutocompleteTrigger;

person GreyBeardedGeek    schedule 17.06.2019
comment
Также дополнительную информацию можно найти здесь - person KiraAG; 17.06.2019

я не могу комментировать, поэтому я должен добавить ответ

https://v8.angular.io/guide/static-query-migration

person Damian Pioś    schedule 17.06.2019