У меня есть два поля выбора. Когда значение выбрано в первом окне выбора, делается запрос к серверу для заполнения второго поля выбора. Поскольку этот второй вызов занимает ~ 10 секунд по независящим от меня причинам, я хочу показать подсказку, которая говорит что-то вроде: «Пожалуйста, подождите, загружая XYZ с сервера».
В первом окне выбора для события изменения изменения настроен обработчик событий, и он правильно устанавливает подсказку во втором окне. Однако второе поле не показывает подсказку, пока не получит фокус. (Если я попытаюсь поместить подсказку в первое поле, она сразу же покажет подсказку, поскольку она уже имеет фокус.)
Я использую Angular CLI 7.0.2, Angular 7.0.0 и узел 8.11.1.
Компонент тс:
@ViewChild("otherSelect")
secondSelect: MatFormField;
onFirstThingSelect(event: MatSelectChange ) {
this.secondSelect.hintLabel = "Please wait, loading...";
// expensive/slow call to populate secondSelect goes here
}
Компонент html:
<mat-form-field #firstSelect>
<mat-select placeholder="First Thing" (selectionChange)="onFirstThingSelect($event)">
<mat-option *ngFor="let first of firstThings$ | async" [value]="first">
{{first}}
</mat-option>
</mat-select>
</mat-form-field>
<mat-form-field class="col-md-4" #otherSelect>
<mat-select placeholder="Second Thing">
<mat-option *ngFor="let second of secondThings$ | async" [value]="second">
{{second}}
</mat-option>
</mat-select>
</mat-form-field>
Рабочий стекблиц: https://stackblitz.com/edit/angular-fkjd8m-qm8mxp
Очевидно, что это не то, для чего изначально был создан matHint (или hintLabel). Но как я могу заставить подсказку показывать второй выбор после заполнения первого? Должен ли я добавить ViewChild для фактического второго выпадающего списка и наложить на него фокус?