2017-09-20 46 views
0

我尝试建立自己的自定义数据网格,它的工作, 问题是执行任何操作,如不更新在angular4中执行操作后数据未更新?

my.component.html

<grid [data] = "data" [columns]="columns" 
    (actionChanged) = "onChangeAction($event)"> </grid> 

我删除数据后。 component.ts

onChangeAction (actionData) { 
    console.log(actionData, 'action change data in main component') 
    if (actionData.action === 'delete') { 
      this.delete (actionData) 
    } 

    if (actionData.action === 'add') { 
     this.add (actionData) 
    } 
    } 
    delete (actionData) { 
    console.log(actionData, 'delete function calll', this.data.length) 
    const index: number = this.data.indexOf(actionData.rowData.name); 
    if (index === -1) { 
     this.data.splice(index, 1); 
    }; 
    console.log(this.data.length, index) 
    } 
    add (actionData) { 
    console.log(actionData, 'add function calll') 
    } 

** ** grid.ts

@Output() public actionChanged: EventEmitter<any> = new EventEmitter(); 

    public updateAction (row, action) { 
    console.log(row, 'Row', action) 
    let actionData = { 
      rowData: row, 
      action: action 
     } 
    this.actionChanged.emit(actionData); 
} 

我使用@input()从电网@outPUt()

我从电网到my.component完美,万阿英,蒋达清获取数据获取数据将数据传递到网格执行删除操作的数据后没有更新到网格。

请任何人都可以帮助我。 在此先感谢

+0

确保你通过实施方法ngOnChanges – mareks

+0

是的,我试过onChanges,Docheck事件听变化,与万阿英,蒋达清解决50 %,数据在删除操作后更新,但执行过滤器函数后数据未更新 – Rahiman

+0

如果@Input()属性中发生任何更改,则grid.ts中的ngOnChanges()将侦听更改。在你的主要组件中,onChangeAction()更新数据的值,只有那时ngOnChanges()才会触发,所以不要使用this.data.splice()来实现this.data = this.data.splice() – JayDeeEss

回答

0

您需要添加一个方法来grid.ts

ngOnChanges(changes: SimpleChanges) { 
    // changes holds the new data 
    // so you could set 
    // this.data = changes; 
} 
+0

这里是什么:SimpleChanges) – Rahiman

相关问题