Domyślna wartość select

0

Potrzebuje wybrać domyślnie z listy drugą jednostkę gdy pierwsza jest 'kpl'.Warunek umiem obsłużyć.Myślałem,że da radę zwykłym (change)="ChangingValue($event)" [value]='1' ale wtedy nie zmienia ceny.Nie siedzę w angularu i nie bardzo mi wychodzi zmiana kodu

<app-select *ngIf="productsList.products[i]?.units?.size > 1"
                        class="unit"
                        [(ngModel)]="productsList.products[i].unitId"
                        (ngModelChange)="productsList.unitConverter(i);">
 
                <app-option *ngFor="let el of productsList.products[i].units | iterableToArray"
                           [value]="el[0]">
 
                    {{el[1].auxiliaryUnit}}
 
                </app-option>
            </app-select>

Metoda pobierająca jednostki tak mi się wydaje

 /**
    * Converts units, updates model
    */
    unitConverter(index: number): Promise<number> {
 
 
        const unitElement = this.products[index].units.get(this.products[index].unitId);
 
        //if unit never loaded
        if (unitElement === undefined || unitElement.basicUnit === undefined) {
 
            //load unit and change unit data
 
            this.products[index].unitsLoaded = false;
 
            const params: b2b.UnitConvertRequest = {
                cartId: this.products[index].cartId.toString() || '1',
                id: this.products[index].id.toString(),
                unitNo: this.products[index].unitId.toString() || '0',
                features: this.parametersToString(0) || '',
                warehouseId: this.filters.currentFilter.warehouse.id || '0'
            };
 
 
            return this.unitConverterRequest(params).then(res => {
 
                const unitData = Object.assign(res, {
                    converter: (res.auxiliaryUnit) ? FormattingUtils.unitConverterString(res.denominator, res.auxiliaryUnit, res.numerator, res.basicUnit) : null,
                    max: FormattingUtils.stringToNum(res.stockLevel)
                });
 
                this.products[index].units.set(this.products[index].unitId, unitData);
 
                this.products[index] = Object.assign(this.products[index], unitData);
 
                this.products[index].unitsLoaded = true;
 
                return index;
            });
 
        } else {
 
            //change unit data
 
            this.products[index] = Object.assign(this.products[index], unitElement);
 
            return Promise.resolve(index);
        }
 
 
    }
loadUnits(index: number): Promise<number> {

        if (this.products[index].unitsLoaded) {
            //return Promise.resolve(index);
        }

        return this.requestUnits(this.products[index].id).then((res: b2b.UnitResponse[]) => {

            if (!this.products[index].units) {
               this.products[index].units = new Map<number, b2b.UnitMapElement>();
            }

            res.forEach(item => {

                if (!this.products[index].units.has(item.no)) {

                    this.products[index].units.set(item.no, {
                       auxiliaryUnit: item.unit
                    });
                }
            });

            this.products[index].unitsLoaded = true;

            return index;

        });

    }
0

Nie domyślna, tylko zmieniona.

document.getElementById("select_ustawiany").selectedIndex = nr_wartosci_ustawianej;
0
Freja Draco napisał(a):

Nie domyślna, tylko zmieniona.

document.getElementById("select_ustawiany").selectedIndex = nr_wartosci_ustawianej;

Czyli teraz mam przerobić metodę,żeby zwracała zależnie od podanego id ?

1
capslo napisał(a):
Freja Draco napisał(a):

Nie domyślna, tylko zmieniona.

document.getElementById("select_ustawiany").selectedIndex = nr_wartosci_ustawianej;

Czyli teraz mam przerobić metodę,żeby zwracała zależnie od podanego id ?

Nie znam Angulara, ale jeżeli tam trzeba napisać 30 linii, żeby zrobić coś, co w czystym JS dałoby się załawić trzema, to albo coś jest nie tak z Angularem, albo z twoim kodem.

1 użytkowników online, w tym zalogowanych: 0, gości: 1