Извините, если это дубликат!
Поэтому я пытаюсь установить по умолчанию mat-select
для первого параметра в списке. Звучит достаточно легко, правда? Неправильно. Я использую модальное окно, которое появляется для ввода задачи, и пытаюсь установить статус по умолчанию (который вы можете выбрать только после выбора проекта). Функция compareWith
работает просто отлично, но после выхода из модального режима и повторного входа (без обновления страницы) второй параметр в функции compareWith
имеет значение NULL, и статус по умолчанию не имеет значения. При выходе из формы я сбрасываю ее. Я использую FormControl
, а не ngModel
, просто к вашему сведению.
Я пробовал пару различных compareWith
функций, но нашел только одну, которая работает. Я попытался использовать [selected]="whatever"
на теге select, но быстро выяснил, что он не работает для материальных ресурсов. Я также попытался установить значение formcontrol равным состоянию при сбросе формы. Это работает, но оно отображается, когда я снова открываю модальное окно. Поскольку статус отключен до тех пор, пока проект не будет выбран, я не хочу показывать статус при загрузке.
Выбор проекта в html:
<mat-form-field class="form-group">
<mat-select id="project" name="project" placeholder="Project" formControlName="project" [required]="true"
[ngClass]="{'is-invalid': formAddTask.project.errors}">
<mat-option *ngFor="let project of availableProjects" [value]="project.id">{{project.name}}</mat-option>
</mat-select>
<mat-error *ngIf="addTaskForm.get('project').hasError('required')">Project is required</mat-error>
</mat-form-field>
Статус выбора в html:
<mat-form-field class="form-group">
<div class="input-group"></div>
<mat-select id="status" name="status" placeholder="Status" formControlName="status" [compareWith]="compareObjects">
<mat-option *ngFor="let status of availableStatuses; let i = index" [class.selected]="status === selectedStatus"
[value]="status.id">{{status.name}}</mat-option>
</mat-select>
</mat-form-field>
Сравнить с функцией в тс:
compareObjects(o1: any, o2: any): boolean {
return o1.name === o2.name && o1._id === o2._id;
}
Дайте мне знать, если мне еще что-нибудь нужно показать!
В статусе не должно быть ничего, пока проект не будет выбран, как только это произойдет, я бы хотел, чтобы статус по умолчанию был первым параметром в списке. На самом деле происходит то, что после выхода из модального режима и возврата в него состояние по умолчанию больше не будет отображаться после выбора проекта или будет отображаться при начальной загрузке модального режима, которое я хочу, чтобы оно отображало значение по умолчанию только после Проект выбран.
Извините, если я слишком много повторюсь, я бы скорее дал слишком много информации, чем недостаточно. Заранее спасибо, любая помощь приветствуется! :)