ngx ng2 angularjs ng-options angular-translate

angularjs - ng2 - ngx-translate angular 4



Cómo ng-translate dentro de la opción de seleccionar cuadro en angularjs (2)

Otro método más simple al usar md-select, aquí placeholder también se usa

JSON: "placeholder":{ "gender": "Gender" }, "gender": { "TXT_MALE": "Male", "TXT_FEMALE": "Female" }

Código HTML:

<md-select ng-model="gender" placeholder="{{''placeholder.gender'' | translate}}" ng-required="true" style="width: 160px;" > <md-option ng-value="gender .code" ng-repeat="gender in genders" translate="gender.{{gender.name}}"></md-option> </md-select>

¿Cómo aplico ng-translate para traducir las opciones dentro de un cuadro de selección?
Por ejemplo:

Modelo:

<select class="form-control" ng-model="me.gender" ng-options="gender.name for gender in genders"> </select>

Controlador:

$scope.genders = [{code: "M", name:"TXT_MALE"}, {code: "F", name:"TXT_FEMALE"}]

enUS.json:

{ "TXT_MALE": "Male", "TXT_FEMALE": "Female", }

Intenté agregar filtro como ng-options="gender.name for gender in genders | translate" pero obviamente estaba agregando filtro a $scope.genders array en lugar de solo elemento

Intenté escribir mi propio filtro (soy nuevo en esto)

filter(''translateArrayObj'', [''$translate'', ''_'', function($translate, _) { return function(arr) { var arr2 = []; angular.forEach(arr, function (value, key) { $translate(value.name).then(function(translation) { var obj2 = angular.copy(value); obj2.name = translation; obj2.code = value.code; arr2.push(obj2); }); }); return arr2; } }])

Pero tengo un error de seguimiento

Error: [$rootScope:infdig] 10 $digest() iterations reached. Aborting!

Parece una tarea simple pero ya ha tomado la mitad de mi día, ¿qué estoy haciendo mal?


gender.name aplicar el filtro a gender.name y no a la matriz de genders :

<select ng-model="me.gender" ng-options="gender.name | translate for gender in genders"></select>

Aquí hay una demostración