简体   繁体   English

Angular ts-从ngFor导入具有本地数据的组件

[英]Angular ts - importing components with local data from ngFor

I'm relativly new to Angular2 and i'm currently struggling with importing components in ngFor loop. 我是Angular2的新手,目前正努力在ngFor循环中导入组件。

It appears that when you import components with data in ngFor loops, it checks for values in the .ts file and not the local variable used in ngFor. 看起来,当您在ngFor循环中导入带有数据的组件时,它将检查.ts文件中的值,而不是ngFor中使用的局部变量。 What I want to do is to send the variable used in ngFor to the next component. 我要做的是将ngFor中使用的变量发送到下一个组件。

accommodations.component (parent view) accommodations.component(父视图)

ts: ts:

import { Component, Input } from '@angular/core';
import { AccommodationModel } from '../../../../models/reservations/accommodation-model';

@Component({
    selector: 'reservations-reservation-accommodations',
    templateUrl: './accommodations.component.html'
})

export class AccommodationsComponent {
    constructor() { }

    @Input() accommodations: AccommodationModel[];
}

html: 的HTML:

<div class="card-block">
                <ngb-tabset>
                    <ngb-tab *ngFor="let accommodation of accommodations" title="{{accommodation.arrivalDate}}">
                        <ng-template ngbTabContent>
                            <div class="table-responsive">
                                <table class="table table-condensed table-bordered table-striped content-divider-up">
                                    <thead>
                                        <tr>
                                            <th>ArrivalDate</th>
                                        </tr>
                                    </thead>
                                    <tbody>
                                        <tr>
                                            <td>
                                                {{accommodation.arrivalDate}}
                                            </td>
                                        </tr>
                                    </tbody>
                                </table>
                            </div>
                        </ng-template>
                    </ngb-tab>
                </ngb-tabset>

                <reservations-reservation-accommodations-costs [costs]="accommodation.costs"></reservations-reservation-accommodations-costs>
            </div>

costs.component (child view) cost.component(子视图)

ts: ts:

import { Component, Input } from '@angular/core';
import { CostModel } from '../../../../../models/reservations/cost-model';

@Component({
    selector: 'reservations-reservation-accommodations-costs',
    templateUrl: './costs.component.html'
})

export class CostsComponent {
    constructor() { }

    @Input() costs: CostModel[];
}

html: 的HTML:

<div class="row content-divider-up">
    <div class="col">
        {{costs.length}}
    </div>
</div>

How do I send let accommodation(.costs) in ngFor to costs.component ? 如何将ngFor中的let住宿(.costs)发送到cost.component With the code above, costs is always undefined in costs.component because its looks for a variable named "accommodation" in the accommodations.components.ts file which i don't want. 使用上面的代码,costs.component中始终没有定义cost,因为它会在我不想要的Accommodations.components.ts文件中寻找名为“ accommodation”的变量。

<reservations-reservation-accommodations-costs [costs]="accommodation.costs"></reservations-reservation-accommodations-costs>

Accommodation是for循环的本地模板引用,并且您正在使用for循环范围之外的引用,因此需要将该引用放入for循环中才能定义适应

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM