我想了解当底层数据发生变化时,Angular 组件如何重新渲染以显示新信息。(例如推送/删除)
我有以下使用数据服务获取数据的组件。首次初始化组件时,将执行构造函数并检索现有数据(如果有)。
表.component.ts
export class TableComponent implements OnInit {
table : Task[]
dropdowns = ["green", "yellow", "red"]
taskName : string
taskStatus : string
@ViewChild('form') form: NgForm
constructor(private tableService : TableService) {
// if I comment the line below my table does not get updated when submitTask() is run.
this.table = tableService.getData();
}
submitTask() {
const taskName : string = this.form.form.value.taskName
const taskStatus : string = this.form.form.value.taskStatus
const task: Task = {item: taskName, status: taskStatus}
this.tableService.addData(task)
}
ngOnInit(): void {
}
}
表服务.ts
export class TableService {
tableData : Task[] = []
constructor() { }
addData(task : Task) {
this.tableData.push(task)
}
getData() : Task[] {
return this.tableData
}
}
组件的submitTask()
功能使用tableService
更新table
数据源。每当submitTask()
被调用时,似乎this.table
数组也会突然更新。被调用的构造函数又被TableComponent
调用了吗?我不确定处理数据更改的角度工作流程。