#angular
#angular
Вопрос:
У меня особая проблема. На странице пользователь может нажать кнопку, чтобы изменить обслуживание. Это сложный объект, который имеет несколько пар <ключ, значение>. Я пытаюсь найти решение, которое автоматически заполняет поля, чтобы пользователю не приходилось снова вводить одни и те же значения и, возможно, вносить нежелательные изменения.
Текущая ситуация
<!-- Modal -->
<ng-template #dialog2 let-ref2="dialogRef2">
<nb-card>
<nb-card-header>Modifica Manutenzione</nb-card-header>
<nb-card-body>
<label>Macchinario</label>
<br>
<nb-select fullWidth id="machine" name="machine" [(ngModel)]="idmachine">
<nb-option *ngFor="let machine of machineObject" [value]="machine.idmachine"
[selected]="selectedMaintenance.idmachine == machine.idmachine">
{{machine.description}}</nb-option>
</nb-select>
</nb-card-body>
<nb-card-footer>
<button nbButton status="primary" (click)="modifyMaintenance()">Invia</button>
<button nbButton status="default" (click)="dialogRef2.close()">Chiudi</button>
</nb-card-footer>
</nb-card>
</ng-template>
Перед открытием этого модального я должен выполнить эту функцию:
openDialog2(maintenance): void {
this.selectedMaintenance = maintenance;
this.dialogRef2 = this.dialogService.open(this.dialog2);
this.cdRef.detectChanges();
}
Начальное значение selectedMaintenance равно null. Перед открытием модального я устанавливаю новое значение для переменной. Как я могу заставить Angular обнаружить это изменение, чтобы он автоматически выбирал соответствующий параметр на странице HTML?
Заранее благодарю вас
Ответ №1:
Решение
Решение, которое я нашел, очень простое. Перед открытием модального я присваиваю значения переменным
openDialog2(maintenance): void {
this.selectedMaintenance = maintenance;
this.selectMaintenancesForMachine(this.selectedMaintenance.idmachine);
this.selectComponentsForMachine(this.selectedMaintenance.idmachine);
//Assegno le variabili
this.idmachine = this.selectedMaintenance.idmachine;
this.machinenumber = this.selectedMaintenance.machinenumber;
this.dialogRef2 = this.dialogService.open(this.dialog2);
}