【问题标题】:Loop over response objects based on condition angular 5基于条件角 5 循环响应对象
【发布时间】:2019-02-07 04:00:11
【问题描述】:

我有一个休息响应,我想循环,但根据条件,这是我的响应:

{
    "veichleType": "SUV",
    "veichleBrand": "BMW",
    "veichleModels": [{
            "veichleModel": "M3",
            "property1": "value",
            "property2": "value",
            "property3": "value"
        },
        {
            "veichleModel": "M1",
            "property": "value",
            "property2": "value",
            "property3": "value"
        }
    ]
}

如果用户通过 M3 搜索然后在表中显示该对象响应,则我希望在 UI 中仅显示一个基于 veichleModel 的对象,否则显示 M1。

<table>
<thead>
headings here
</thead>
<tbody *ngIf='serviceResponse.veichleModels'>
<tr *ngFor="let veichleModel of serviceResponse.veichleModels">
<td>{{veichleModels.property1}}</td>
<td>{{veichleModels.property2}}</td>
<td>{{veichleModels.property3}}</td>        
</tbody>
</table>

【问题讨论】:

    标签: angular5 ngfor angular-ng-if


    【解决方案1】:

    你需要在这里做两件事:

    1. 添加一些变量来存储选定的模型M1M3
    2. 在循环内添加条件以显示相应的对象属性(利用ng-container

    这样做,您可以将数组扩展到 100 个或更多对象

    模板

    <tbody *ngIf='serviceResponse.veichleModels'>
            <tr *ngFor="let veichle of serviceResponse.veichleModels">
                <ng-container *ngIf="veichle.veichleModel == selected">
                    <td>{{veichle.property1}}</td>
                    <td>{{veichle.property2}}</td>
                    <td>{{veichle.property3}}</td>
                </ng-container>
            </tr>
    </tbody>
    

    ts 文件

    export class AppComponent  {
      selected = 'M1';
      serviceResponse = {"veichleModels": [{
                "veichleModel": "M3",
                "property1": "M3val1",
                "property2": "M3val2",
                "property3": "M3val3"
            },
            {
                "veichleModel": "M1",
                "property1": "M1val1",
                "property2": "M1val2",
                "property3": "M1val3"
            }
        ]}
    }
    

    【讨论】:

    • 谢谢,我想问为什么要在组件中添加值和属性?响应来自我在模板中迭代的带有两个对象的 rest API,我只想显示其中一个对象,而不是基于 veichleModel 的完整响应
    • 你可以随意修改。当然,您可以将动态数据分配给serviceResponse。我只是展示了如何根据特定条件打印对象属性。那是你的实际问题。在我的回答中,我确实只显示了一个条件匹配的对象,而不是整个响应。
    猜你喜欢
    • 2020-03-31
    • 2015-01-11
    • 1970-01-01
    • 2023-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-12
    • 2020-04-05
    相关资源
    最近更新 更多