Angular 为什么数据父级更新而数据子级不更新';t更新,我使用@Input? 导出类DataSourceFormComponent实现OnInit{ 公共_数据:字符串[] get data():任何{返回此。_data} @输入() 设置数据(数据:任意){ 这是数据 console.log(此.\u数据) } @Output()showmodel:EventEmitter=neweventemitter(); @Output()removeConnectSapoWeb:EventEmitter=neweventEmitter(); @Output()showModalReplication:EventEmitter=neweventemitter(); public dataReplicationSapoWeb=新MatTableDataSource(); 公共显示的ColumnsReplicationSAPOWEB:string[]=['taikhoanlienket','capnhat','huylienket']; @ViewChild(MatPaginator,{static:true})paginator:MatPaginator; 构造函数(私有cd:ChangeDetectorRef){} 恩戈尼尼特(){ //console.log('OnInit'+this.data) 此.paginator.\u intl.itemsPerPageLabel=“Số Dự 安嗨ể第n条ị"; this.dataReplicationSapoWeb=新MatTableDataSource(this.data); this.dataReplicationSapoWeb.paginator=this.paginator; } 单击显示模式(值){ this.showmodel.emit(值) } 单击ShowModalReplication(值){ this.showModalReplication.emit(值) } 单击移除连接SAPOWEB(值:字符串){ this.removeConnectSapoWeb.emit(值) } }

Angular 为什么数据父级更新而数据子级不更新';t更新,我使用@Input? 导出类DataSourceFormComponent实现OnInit{ 公共_数据:字符串[] get data():任何{返回此。_data} @输入() 设置数据(数据:任意){ 这是数据 console.log(此.\u数据) } @Output()showmodel:EventEmitter=neweventemitter(); @Output()removeConnectSapoWeb:EventEmitter=neweventEmitter(); @Output()showModalReplication:EventEmitter=neweventemitter(); public dataReplicationSapoWeb=新MatTableDataSource(); 公共显示的ColumnsReplicationSAPOWEB:string[]=['taikhoanlienket','capnhat','huylienket']; @ViewChild(MatPaginator,{static:true})paginator:MatPaginator; 构造函数(私有cd:ChangeDetectorRef){} 恩戈尼尼特(){ //console.log('OnInit'+this.data) 此.paginator.\u intl.itemsPerPageLabel=“Số Dự 安嗨ể第n条ị"; this.dataReplicationSapoWeb=新MatTableDataSource(this.data); this.dataReplicationSapoWeb.paginator=this.paginator; } 单击显示模式(值){ this.showmodel.emit(值) } 单击ShowModalReplication(值){ this.showModalReplication.emit(值) } 单击移除连接SAPOWEB(值:字符串){ this.removeConnectSapoWeb.emit(值) } },angular,typescript,angular-material,Angular,Typescript,Angular Material,这是子组件,然后父组件事件“RemoveConnectionsAppoweb”将更新此。NumberOfDuplicateSAppoweb,但子组件上的数据不会更新。 事件移除连接SAPOWEB/Add是异步的 问题是您仅在ngOnInit中将值设置为dataReplicationSapoWeb,因此当您收到新的数据值时,它不会更改其值。您需要执行以下操作: @Input() set data(data:any){ this._data = data this.dataRe

这是子组件,然后父组件事件“RemoveConnectionsAppoweb”将更新此。NumberOfDuplicateSAppoweb,但子组件上的数据不会更新。 事件移除连接SAPOWEB/Add是异步的


问题是您仅在ngOnInit中将值设置为dataReplicationSapoWeb,因此当您收到新的数据值时,它不会更改其值。您需要执行以下操作:

@Input() 
  set data(data:any){
    this._data = data
    this.dataReplicationSapoWeb = new MatTableDataSource<any>(this.data); <- Assign value to DataSource each time you receive new data
  }
@Input()
设置数据(数据:任意){
这是数据

this.dataReplicationSapoWeb=新MatTableDataSource(this.data);其他一切是否都像o/p事件和其他事情一样工作?您如何更新父级中的数据?它看起来像一个数组-因此,如果您只是添加/删除/更改其中的元素,它将不会更新。为了让子级实际注册更新,您需要使用新的数组重新分配该字段是一个数组,我在添加/删除时推送或拼接,它不会在子组件上更新,但当我执行新事件时,它会再次更新,我不知道为什么?为什么我会在父级更新数据,但“console.log(this._data)”不会显示,它只显示一次
@Input() 
  set data(data:any){
    this._data = data
    this.dataReplicationSapoWeb = new MatTableDataSource<any>(this.data); <- Assign value to DataSource each time you receive new data
  }