Вы должны внести некоторые изменения в свой код:
Вам нужно установить свойство value в select
[value]="selectedDropdownValue"
Прямо сейчас вы получаете индекс массива нужного вам значения для изменения, но ваши параметры имеют значение noteId
public changeDropdown(value) {
const entry = this.dropdownValue.findIndex(x => x.noteId === parseInt(value));
this.selectedDropdownValue = this.dropdownValue[entry].noteId;
}
После этого изменения вам нужно изменить отключенные логи c на кнопках.
Для следующей кнопки нам понадобится чтобы получить noteId для последнего элемента, то есть:
[disabled]="selectedDropdownValue === dropdownValue[dropdownValue.length - 1].noteId"
И для предыдущей кнопки:
[disabled]="selectedDropdownValue<=1"
Чтобы отобразить значение по умолчанию (выберите), измените значение параметра на 0 (Или вы можете изменить начальное значение вашего selectedDropdownValue):
<option value="0" selected disabled>Select Note Details</option>
Наш лог c для следующего и предыдущего не так прост, как подсчет вверх и вниз, потому что нам нужно поддерживать noteIds, а не массив index нам нужно изменить метод previousNextValue
:
public previousNextValue(value) {
let previousValue = this.selectedDropdownValue;
if (previousValue === 0) {
// 0 as selectedDropdownValue is our initial value ('Select Note Details') and has not yet an actual noteid as value, so we set the noteId from our first element
this.selectedDropdownValue = this.dropdownValue[0].noteId
} else {
// If we already have a valid noteId as selectedDropdownValue we need to find it in the array and get the noteId from the next element
const currentIndex = this.dropdownValue.findIndex(x => x.noteId === previousValue);
this.selectedDropdownValue = this.dropdownValue[value ? currentIndex + 1 : currentIndex - 1].noteId
}
}
https://stackblitz.com/edit/angular-gkgu6n?file=src / app / app.component.ts