#angular #typescript #sorting #response
Вопрос:
Я хочу отсортировать свои response.data
, но у меня есть эта ошибка:
Свойство «описание» не существует для типа » {метка: строка; значение: строка; }».
getItemsTypes(): Observablelt;OptionModel[]gt; { const url = ApiUrlsConfig.risks.getItemsTypes(); return this.http.getlt;ResponseModellt;ItemsType[]gt;gt;(url).pipe( map((response) =gt; response.data.map((c) =gt; ({ label: c.description, value: c.id })).sort((a, b) =gt; a.description gt; b.description ? 1 : -1)) ); }
Есть какие-нибудь идеи, пожалуйста? Как исправить эту ошибку?
Комментарии:
1. у вашего массива нет
description
свойства «есть толькоlabel
«, иvalue
именно поэтому вы получаете ошибку. На каком основании вы хотели бы отсортировать свой массив?
Ответ №1:
У вашего массива нет description
свойства, есть только label
свойство и value
свойство, поэтому вы получаете ошибку.
В sort(a,b)
функции a
и b
обратитесь к элементам массива.
Я думаю, вы хотите сортировать по длине описания. И вы назначаете description
внутри label
. Так что вы можете сделать вот так
const url = ApiUrlsConfig.risks.getItemsTypes(); return this.http.getlt;ResponseModellt;ItemsType[]gt;gt;(url).pipe( map((response) =gt; response.data.map((c) =gt; ({ label: c.description, value: c.id })).sort((a, b) =gt; a.label - b.label)) ); }
Комментарии:
1. Я хочу отсортировать их по алфавиту. Спасибо