Vì vậy, giả sử chúng tôi có một đối tượng đơn giản chứa chuỗi cho hai ngôn ngữ khác nhau như
welcomeText = {"de": "Willkommen zurück!", "en": "Welcome back!"}
.angular2 elvis toán tử và ký hiệu khung/đối tượng truy cập bằng phím
welcomeText
là tài sản của Texts
đối tượng chứa tất cả văn bản và được phân phối không đồng bộ (vì vậy tôi cần phải chăm sóc các giá trị không xác định có thể, do đó toán tử elvis). Bây giờ, trong mẫu angular2 của tôi, tôi muốn hiển thị văn bản dựa trên ngôn ngữ được chọn hiện tại.
này đang làm việc (nhưng không phải những gì tôi cần):
..
{{Texts?.welcomeText?.de}} // works, as well as {{Texts?.welcomeText?.en}}
..
gì tôi muốn là thế này (kể từ ngôn ngữ có thể được thay đổi):
..
{{Texts.?welcomeText?[language]}}
..
Đáng tiếc là điều này dẫn đến một lỗi:
EXCEPTION: Template parse errors:
Parser Error: Conditional expression
{{Texts?.welcomeText?[language]}}
requires all 3 expressions at the end of the expression ..
Không biết cách khắc phục lỗi này. Tôi chỉ không chắc chắn nếu tôi đang sử dụng nó sai hoặc nếu nó chỉ đơn giản là không có ý định làm việc như thế. Đối với thời điểm này tôi sử dụng một cách giải quyết đơn giản, nhưng tôi thấy nó có hơi xấu xí kể từ khi tôi có một lời gọi phương thức ở khắp mọi nơi tôi muốn hiển thị văn bản:
..
{{getText('welcomeText')}}
..
..
getText(name : string){
if(this.Texts)
return this.Texts[name][this.language]
..
Đây có phải là chỉ con đường để đi hoặc là có một cách để làm theo cách tôi muốn, với toán tử elvis?
Cảm ơn rất nhiều câu trả lời!