如何使用ngx-translate将变量传递给ngFor?

问题描述 投票:1回答:3

我正在尝试迭代来自ngx-translate的翻译文件的键/值json对象。

这很好用:

<div *ngFor="let item of 'gallery.01.images' | translate | keyvalue">
    <p>{{item .key}}:{{item .value}}</p>
</div>

但是如果我想在iterable对象中包含一个变量,它会抛出以下错误:

<div *ngFor="let item of 'gallery.{{id}}.images' | translate | keyvalue">
    <p>{{item .key}}:{{item .value}}</p>
</div>

错误

emplate parse errors: Can't bind to '*ngFor' since it isn't a known property of 'div'

i18n / en.json

{
    "gallery": {
        "01: {
            "images": ["001", "002", "003"]
        },
        "02: {
            "images": ["006", "009"]
        }
    }
}
angular angular7 ngx-translate
3个回答
0
投票

使用{{ }}仅用于在访问变量时显示数据。如果要迭代一般数组,可以执行以下操作:

<div *ngFor="let item of myCustomArray | translate | keyvalue">
    <p>{{item .key}}:{{item .value}}</p>
</div>

如果你有任何问题。随意问:)


0
投票

正确的语法是*ngFor="let item of items",其中Angular期望在items中获取可迭代值的数组。

我相信你想做的是在gallery.idimages上迭代两次

<div *ngFor="let item of gallery">
    <div *ngFor="let it of 'gallery.id.images' | translate | keyvalue">    
        <p>{{item .key}}:{{item .value}}</p>
    </div>
</div>

希望能帮助到你!


0
投票

尝试

   <div *ngFor="let service of ('AboutUs.data' | translate)">
                      <p>{{service.title}}</p>
                      <p>{{service.description}}</p>
   </div>

使用.json中的数组如下:

 "AboutUs": {
    "title": "About Us",
    "data": [
      {
        "title": "Mission",
        "description": "Lorem ipsum dolor sit amesexercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.",
      },
      {
        "title": "Plan",
        "description": "Lorem ipsum dolor do consequat.",

      }]
}
© www.soinside.com 2019 - 2024. All rights reserved.