/ / Używanie rury i18n select - kątowa, kątowa 2-rurowa

Korzystanie z rury i18n select - kątowe, kątowe 2-rurowe

Próbuję użyć I18nSelectPipe. Mam następujące code:

this.criteria = [];
this.criteria.push({
id: 1,
name: "ab"
});
this.criteria.push({
id: 2,
name: "cd"
});
this.criteria.push({
id: 3,
name: "ef"
});

this.criteriaChoice = {};
this.criteriaChoice["1"] = "One";
this.criteriaChoice["2"] = "Two";
this.criteriaChoice["3"] = "Three";

W HTML:

<div *ngFor="let criterium of criteria">
<strong>{{criterium.id | i18nSelect: criteriaChoice}}</strong>
</div>

Jak mogłeś zauważyć, próbuję po prostu przetłumaczyć "klucz" używając tego rura, ale zawsze zwraca mi następujący błąd:

ORYGINALNY WYJĄTEK: Nieprawidłowy argument "[obiekt obiektu]" dla potoku "I18nSelectPipe"

Jeśli spróbuję czegoś prostego, jak poniżej, działa:

<strong>{{"1" | i18nSelect: criteriaChoice}}</strong>

Jak mogę to rozwiązać?

Nawiasem mówiąc, jest to przykładowy kod, kod nie jest tak zakodowany na stałe.

Odpowiedzi:

2 dla odpowiedzi № 1

Próbować:

<strong>{{criterium.id+"" | i18nSelect: criteriaChoice}}</strong>

Miałem ten sam problem z wartością boolowską przy użyciu Angular 2.4.10.

Kiedy spojrzałem na kod:

I18nSelectPipe.prototype.transform = function (value, mapping) {
if (value == null)
return "";
if (typeof mapping !== "object" || typeof value !== "string") {
throw new InvalidPipeArgumentError(I18nSelectPipe, mapping);
}
if (mapping.hasOwnProperty(value)) {
return mapping[value];
}
if (mapping.hasOwnProperty("other")) {
return mapping["other"];
}
return "";
};

Zauważyłem, że value bycie podłączonym musi być sznurkiem. Kiedy rzuciłem value do ciągu za pomocą +"", błąd zniknął.