Angular 角度,如何对数组的转换值进行排序

Angular 角度,如何对数组的转换值进行排序,angular,Angular,在angular 6应用程序中,我有一个如下数组: 0:"SINGLE_VISION" 1:"PROGRESSIVE" 2:"BIFOCAL" 3:"DEGRESSIVE" 4:"FILTER" 并显示在带有平移管道(ngx translate)的mat select中 {{type | translate}} 现在数组是按原始值排序的,但我想按转换后的值排序(并在数组中保留原始值) 所以我的数组保持原样,但是如果我打开mat select,我会看到正确顺序的翻译 有没有一种聪明的方法可以

在angular 6应用程序中,我有一个如下数组:

0:"SINGLE_VISION"
1:"PROGRESSIVE"
2:"BIFOCAL"
3:"DEGRESSIVE"
4:"FILTER"
并显示在带有平移管道(ngx translate)的mat select中


{{type | translate}}
现在数组是按原始值排序的,但我想按转换后的值排序(并在数组中保留原始值)

所以我的数组保持原样,但是如果我打开mat select,我会看到正确顺序的翻译


有没有一种聪明的方法可以做到这一点?

您可以创建一个
管道来对数组进行排序。您将使用
TranslateService
中的
instant()
函数对每个值的转换进行排序:

从'@angular/core'导入{Pipe};
从“@angular/core”导入{PipeTransform};
从'@ngx translate/core'导入{TranslateService};
@烟斗({
名称:“orderTranslate”
})
导出类OrderTranslatePie实现PipeTransform
{
构造函数(私有翻译:翻译服务){}
变换(数组:数组):数组
{
array.sort((a:any,b:any)=>
{
if(this.translate.instant(a)this.translate.instant(b))
返回1;
其他的
返回0;
});
返回数组;
}
}
并在
垫中使用它选择


{{v|translate}}

您可以创建一个
管道来对数组进行排序。您将使用
TranslateService
中的
instant()
函数对每个值的转换进行排序:

从'@angular/core'导入{Pipe};
从“@angular/core”导入{PipeTransform};
从'@ngx translate/core'导入{TranslateService};
@烟斗({
名称:“orderTranslate”
})
导出类OrderTranslatePie实现PipeTransform
{
构造函数(私有翻译:翻译服务){}
变换(数组:数组):数组
{
array.sort((a:any,b:any)=>
{
if(this.translate.instant(a)this.translate.instant(b))
返回1;
其他的
返回0;
});
返回数组;
}
}
并在
垫中使用它选择


{{v|translate}}

也许在初始化数组时,可以直接转换值,然后对数组排序?使用TranslateService,您可以使用这个.translate.instant('XXX')来直接转换。我需要维护原始数组。您可以为元素放置整个代码吗?也许在初始化数组时,您可以直接转换值,然后对数组排序?使用TranslateService,您可以使用这个.translate.instant('XXX')直接进行翻译。我需要维护原始阵列。您可以为元素放置整个代码吗?
<mat-select placeholder="placeholder" formControlName="type"> 
 {{ type | translate}} </mat-option>
 </mat-select>