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;
});
}