在Angular 6中,可以使用输入和输出属性来从一个组件传递数据到另一个组件,并将对象推入数组中。以下是一个示例解决方法:
首先,创建一个父组件(parent.component.ts):
import { Component } from '@angular/core';
@Component({
selector: 'app-parent',
template: `
Parent Component
- {{ item.name }}
`
})
export class ParentComponent {
items: any[] = [];
onDataEvent(data: any) {
this.items.push(data);
}
}
在父组件中,我们定义了一个名为items
的数组,并在onDataEvent
方法中将数据推入数组中。我们还使用*ngFor
指令在模板中循环显示数组的内容。
然后,创建一个子组件(child.component.ts):
import { Component, Output, EventEmitter } from '@angular/core';
@Component({
selector: 'app-child',
template: `
Child Component
`
})
export class ChildComponent {
@Output() dataEvent = new EventEmitter();
emitData() {
const data = { name: 'John Doe', age: 25 };
this.dataEvent.emit(data);
}
}
在子组件中,我们定义了一个dataEvent
输出属性,并在emitData
方法中使用emit
方法将数据发送到父组件。
最后,将这两个组件添加到主模块文件(app.module.ts)中:
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { AppComponent } from './app.component';
import { ParentComponent } from './parent.component';
import { ChildComponent } from './child.component';
@NgModule({
declarations: [
AppComponent,
ParentComponent,
ChildComponent
],
imports: [
BrowserModule
],
providers: [],
bootstrap: [AppComponent]
})
export class AppModule { }
现在,当用户点击子组件中的“Send Data”按钮时,数据将通过输出属性传递到父组件,并将对象推入父组件的items
数组中。然后,父组件将使用*ngFor
指令在模板中循环显示数组的内容。