首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >角:如何与父子组件一起使用*ngFor

角:如何与父子组件一起使用*ngFor
EN

Stack Overflow用户
提问于 2018-08-23 16:03:00
回答 2查看 4.4K关注 0票数 4

反复循环子组件,但每次使用不同的数据,最好的方法是什么?

例如,在我的'sitelist‘组件(父组件)中,我希望循环遍历我的’汇总‘组件(子),尽可能多地遍历数据。“摘要”仅仅是与我从服务中提取的对象数组“站点”中的每个索引对应的数据。

  1. 考虑到父/子关系,显示这些数据的最佳方法是什么?
  2. 需要声明数据并从服务获取数据的文件(sitelist.component.ts还是summary.component.ts)?

对于#1,我可以更改哪些内容来正确地循环这些数据?我不确定我能不能传递这样的数据。

Sitelist.html (父母)

代码语言:javascript
复制
<div *ngFor="let site of sites">
  <app-summary></app-summary>
</div>

summary.html (儿童):

代码语言:javascript
复制
 <li>{{site.id}}</li>
 <li>{{site.name}}</li>
 <li>{{site.location}}</li>

对于#2,取决于#1的答案,我应该将可观察到的文件放在哪个文件中以从服务中获取数据?(sitelist.component.ts或summary.component.ts)

代码语言:javascript
复制
ngOnInit() {
  let observable = this._dataService.getSites()
  observable.subscribe(data => {
      console.log("got info")
      console.log(data)
      this.sites = data
    })}
}

在我的服务中:

代码语言:javascript
复制
export class DataService {
    sites;
    constructor(private _http: HttpClient) { }
    getSites(){ 
      return this._http.get(`http://localhost:3000/sites.json`);
    }
}

谢谢!!如果我能澄清什么,请告诉我。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-08-23 16:05:51

在您的SummaryComponent中,声明它将从SiteListComponent获得的一个@Input属性。

因此,获取站点列表的逻辑将放在您的SiteListComponent类中。

代码语言:javascript
复制
ngOnInit() {
  this._dataService.getSites()
    .subscribe(data => this.sites = data)
}

通过属性绑定语法将站点作为@Input属性传递给SummaryComponent,如下所示:

代码语言:javascript
复制
<div *ngFor="let site of sites">
  <app-summary [site]="site"></app-summary>
</div>

您的SummaryComponent的TypeScript类应该有一个site变量,该变量由@Input装饰器装饰,如下所示:

代码语言:javascript
复制
@Input() site;

通常,父组件(SiteListComponent)应该负责从服务中获取数据。

票数 5
EN

Stack Overflow用户

发布于 2022-09-02 14:13:15

我会回答第一个问题:

Sitelist.html:

代码语言:javascript
复制
<app-summary [site]="site" *ngFor="let site of sites"></app-summary>

SummaryComponent.ts:@Input() site;

下面是一个很好的输入/输出示例:https://stackblitz.com/run?file=src%2Fapp%2Fapp.component.html

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51989971

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档