Если вы хотите сделать это, используя viewChild
, вы можете действовать следующим образом:
Первый дочерний компонент
import { Component } from '@angular/core';
@Component({
selector: 'cmp-1',
template: ''
})
export class Cmp1Component {
public data: any[] = [
{
name: "component 1",
action: "something",
status: "alive"
}
]
}
Второй дочерний компонент
import { Component } from '@angular/core';
@Component({
selector: 'cmp-2',
template: ''
})
export class Cmp2Component {
public data: any[] = [
{
name: "component 2",
action: "something else",
status: "not alive"
}
]
}
Mainиспользование компонента ViewChildren
для получения данных
@Component({
selector: 'my-app',
templateUrl: './app.component.html',
styleUrls: [ './app.component.css' ]
})
export class AppComponent {
@ViewChild('cmp1') component1: Cmp1Component;
@ViewChild('cmp2') component2: Cmp2Component;
}
соответствующий html и css
<cmp-1 #cmp1></cmp-1>
<cmp-2 #cmp2></cmp-2>
<h1>Here's the data from the components</h1>
<hr>
<h3>Component 1</h3>
<div class="box">
<div class="item" *ngFor="let data of component1.data">
<div>{{data.name}}</div>
<div>{{data.action}}</div>
<div>{{data.status}}</div>
</div>
</div>
<hr>
<h3>Component 2</h3>
<div class="box">
<div class="item" *ngFor="let data of component2.data">
<div>{{data.name}}</div>
<div>{{data.action}}</div>
<div>{{data.status}}</div>
</div>
</div>
.box{
display: flex;
flex-direction: column;
}
ПРИМЕЧАНИЕ Я не проверял, существуют ли оба компонента,в этом примере, потому что я знаю это наверняка, поскольку все это просто в статическом контексте.Обязательно проверьте их, если вы ввели, прежде чем выполнять какую-то логику.
Рабочий стек стека: https://stackblitz.com/edit/angular-n1tunk