【发布时间】:2021-10-27 21:55:09
【问题描述】:
我想了解当底层数据发生变化时,Angular 组件如何重新渲染以显示新信息。 (例如推送/删除)
我有以下使用数据服务获取数据的组件。首次初始化组件时,将执行构造函数并检索现有数据(如果有)。
Table.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 {
}
}
Table.service.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 的构造函数是否再次被调用?我不确定处理数据更改的角度工作流程。
【问题讨论】:
-
我觉得这篇文章很有用:Angular change detection
标签: angular typescript angular-services angular-dependency-injection