У меня есть вариант выбора, например:
<option [selected]=" impulse === 10 || isTraining " value="10">10</option>
Когда у меня есть любое возможное значение impulse
и isTraining
равно true
, я ожидаю, что текущий вариант будет выбран по умолчанию из-за выбранного ключевого слова в раскрывающемся списке, но это не так. Вычислялись ли когда-либо логические операторы для атрибутов, требующих логического значения?
Полный выбор здесь
<select class="form-control" name="flashFormatImpulse" id="field_flashFormatImpulses"
(change)="handleFlashImpulseSelection($event)" [(ngModel)]="impulseSelection" [disabled]="isStarted">
<option *ngIf="!isTraining" [selected]="impulse === 1" value="1">1</option>
<option *ngIf="!isTraining" [selected]="impulse === 2" value="2">2</option>
<option *ngIf="!isTraining" [selected]="impulse === 3" value="3">3</option>
<option *ngIf="!isTraining" [selected]="impulse === 4" value="4">4</option>
<option *ngIf="!isTraining" [selected]="impulse === 5" value="5">5</option>
<option *ngIf="!isTraining" [selected]="impulse === 6" value="6">6</option>
<option *ngIf="!isTraining" [selected]="impulse === 7" value="7">7</option>
<option *ngIf="!isTraining" [selected]="impulse === 8" value="8">8</option>
<option *ngIf="!isTraining" [selected]="impulse === 9" value="9">9</option>
<option [selected]="impulse === 10 || isTraining" value="10">10</option>
</select>
UPD
, то есть для кода ниже:
<div class="form-group">
<label class="form-control-label" jhiTranslate="businesslogic.flashs.flashcard.impulse"
for="field_flashFormatImpulses">Flash Impulse</label>
<select class="form-control" name="flashFormatImpulse" id="field_flashFormatImpulses"
(change)="handleFlashImpulseSelection($event)" [(ngModel)]="impulseSelection" [disabled]="isStarted">
<option *ngIf="!isTraining" [selected]="impulse === 1" value="1">1</option>
<option *ngIf="!isTraining" [selected]="impulse === 2" value="2">2</option>
<option *ngIf="!isTraining" [selected]="impulse === 3" value="3">3</option>
<option *ngIf="!isTraining" [selected]="impulse === 4" value="4">4</option>
<option *ngIf="!isTraining" [selected]="impulse === 5" value="5">5</option>
<option *ngIf="!isTraining" [selected]="impulse === 6" value="6">6</option>
<option *ngIf="!isTraining" [selected]="impulse === 7" value="7">7</option>
<option *ngIf="!isTraining" [selected]="impulse === 8" value="8">8</option>
<option *ngIf="!isTraining" [selected]="impulse === 9" value="9">9</option>
<option [selected]="impulse === 10 || isTraining" value="10">10</option>
</select>
</div>
<div>
<select class="form-control">
<option [selected]="true" value="10">10</option>
</select>
</div>
, и эффект все тот же, когда мы меняем код на
<div class="form-group">
<label class="form-control-label" jhiTranslate="businesslogic.flashs.flashcard.impulse"
for="field_flashFormatImpulses">Flash Impulse</label>
<select class="form-control" name="flashFormatImpulse" id="field_flashFormatImpulses"
(change)="handleFlashImpulseSelection($event)" [(ngModel)]="impulseSelection" [disabled]="isStarted">
<option *ngIf="!isTraining" [selected]="impulse === 1" value="1">1</option>
<option *ngIf="!isTraining" [selected]="impulse === 2" value="2">2</option>
<option *ngIf="!isTraining" [selected]="impulse === 3" value="3">3</option>
<option *ngIf="!isTraining" [selected]="impulse === 4" value="4">4</option>
<option *ngIf="!isTraining" [selected]="impulse === 5" value="5">5</option>
<option *ngIf="!isTraining" [selected]="impulse === 6" value="6">6</option>
<option *ngIf="!isTraining" [selected]="impulse === 7" value="7">7</option>
<option *ngIf="!isTraining" [selected]="impulse === 8" value="8">8</option>
<option *ngIf="!isTraining" [selected]="impulse === 9" value="9">9</option>
<option [selected]="true" value="10">10</option>
</select>
</div>
<div>
<select class="form-control">
<option [selected]="true" value="10">10</option>
</select>
</div>
, т.е. имея тот же [selected]
для оба (но другой вид).
Т.е. <option [selected]="true" value="10">10</option>
работает, а <option [selected]="impulse === 10 || isTraining" value="10">10</option>
не
UPD 2
Вот так выглядит код ниже:
<div class="form-group">
<label class="form-control-label" jhiTranslate="businesslogic.flashs.flashcard.impulse"
for="field_flashFormatImpulses">Flash Impulse</label>
<select class="form-control" name="flashFormatImpulse" [(ngModel)]="impulseSelection" id="field_flashFormatImpulses"
(change)="handleFlashImpulseSelection($event)" [disabled]="isStarted">
<option *ngIf="!isTraining" [selected]="impulse === 1" value="1">1</option>
<option *ngIf="!isTraining" [selected]="impulse === 2" value="2">2</option>
<option *ngIf="!isTraining" [selected]="impulse === 3" value="3">3</option>
<option *ngIf="!isTraining" [selected]="impulse === 4" value="4">4</option>
<option *ngIf="!isTraining" [selected]="impulse === 5" value="5">5</option>
<option *ngIf="!isTraining" [selected]="impulse === 6" value="6">6</option>
<option *ngIf="!isTraining" [selected]="impulse === 7" value="7">7</option>
<option *ngIf="!isTraining" [selected]="impulse === 8" value="8">8</option>
<option *ngIf="!isTraining" [selected]="impulse === 9" value="9">9</option>
<option [selected]="impulse === 10 || isTraining" value="10">10</option>
</select>
</div>
<div class="form-group">
<select class="form-control" >
<option *ngIf="!isTraining" [selected]="impulse === 3" value="3">9</option>
<option *ngIf="!isTraining" [selected]="impulse === 9" value="9">9</option>
<option [selected]="impulse === 10 || isTraining" value="10">10</option>
</select>
</div>
<div>impulse {{impulse}}, isTraining {{isTraining}}, result: {{impulse === 10 || isTraining}}</div>
<select class="form-control">
<option [selected]="impulse === 10 || isTraining" value="10">10</option>
</select>
Проблема с выбором коррелирует с использованием [(ngModel)]="impulseSelection"
для селектора (это привязка для значения, используемая на стороне контроллера) и инициализируется как
impulseSelection = 3;
Таким образом, связанная привязка всегда переопределяет значение селектора до 3, пока его там нет. Похоже, единственное решение - установить для этого impulseSelection
значение 10, когда isTraining
присвоено значение true.