Я пытаюсь создать множественный выбор в угловых, где один из элементов в массиве, из которого выбирается, является клоном другого элемента в массиве. Этот клонированный элемент имеет некоторые поля, измененные в нем.
<md-select ng-model="$ctrl.modbusMeterDataParameters.points"
md-on-close="$ctrl.unitSelect()" multiple no-dirty>
<md-option ng-repeat="point in $ctrl.getPoints()" ng-value="point">
{{point.name}}
</md-option>
</md-select>
Изначально я получал ошибку $$hashkey
, но я исправил ее, добавив track by
к моему тегу md-option
:
<md-option ng-repeat="point in $ctrl.getPoints() track by point.name"
ng-value="point">
{{point.name}}
</md-option>
Но в точках, называемых $$mdselectid
, все еще имеется угловое поле, которое одинаково для исходного элемента и клонированного элемента. Я создаю клонированный элемент следующим образом:
this.filteredPoints = this.filterAndSortPoints(this.points);
const threePhaseDataPoint = _.cloneDeep(this.filteredPoints[0]);
threePhaseDataPoint.name = this.fullMeterDataLabel;
this.filteredPoints.push(threePhaseDataPoint);
В настоящее время я решаю проблему, выполняя это:
if (threePhaseDataPoint.$$mdSelectId) {
threePhaseDataPoint.$$mdSelectId = this.filteredPoints.length * 2;
}
Но это выглядит очень глупо. Мне интересно, есть ли лучший способ сделать это?