角嵌套组件与数据

时间:2018-10-04 04:33:37

标签: angular vue.js

我正在尝试嵌套多个组件,如下所示。 我的目标是将用户数据注入到user-item组件中,而无需将item组件写入list组件内。

应用程序组件

<app-user-list>
    <app-user-item></app-user-item>
</app-user-list>

用户列表组件

<div class="card-columns">
    <div class="card" *ngFor="let user of users">           
       ???
    </div>
</div>

User-Item_component

    <div class="card-body">
        <h2 class="card-title">{{ user.name }}</h5>
    </div>

1 个答案:

答案 0 :(得分:3)

如果将TemplateRef提供给UserListComponent,应该很容易。

app.component.ts

@Component({
  selector: 'my-app',
  template: `
    <app-user-list>
        <ng-template let-item>
            <app-user-item [user]="item"></app-user-item>
        </ng-template>
    </app-user-list>
  `
})
export class AppComponent {}

user-list.component.ts

@Component({
  selector: 'app-user-list',
  template: `
    <div class="card" *ngFor="let user of users; template: template"></div>
  `
})
export class UserListComponent {
  users = [
    {
      name: 'User 1'
    },
    {
      name: 'User 2'
    }
  ];

  @ContentChild(TemplateRef) template: TemplateRef<any>;
}

user-item.component.ts

@Component({
  selector: 'app-user-item',
  template: `
    <div class="card-body">
        <h2 class="card-title">{{ user.name }}</h2>
    </div>
  `
})
export class UserItemComponent {
  @Input() user: any;
}

Ng-run Example

相关问题