2017-07-18 71 views
1
const filterVal = (record) => ({ 
    name: record.account, 
}); 

<ReferenceArrayInput {...props} source="access_id" reference="awsroles" label="AWS Roles" sort={{ field: 'id', order: 'DESC' }} filter={filterVal} 
    allowEmpty> 
<SelectArrayInput source="id" /> 

動態過濾器基於record.account值

我想基於在記錄中的值之一,在ReferenceArrayInput添加動態過濾器。但是,由於某些原因,它不起作用。任何幫助,這是非常感謝。

謝謝!

回答

0

您可以嘗試AOR從屬輸入。

https://github.com/marmelab/aor-dependent-input

您可以在HOC包裹SelectArray輸入。通過這種方式,您可以攔截傳遞給SelectArray輸入的記錄並將其更改爲您的需要。

就是這樣。

const higherOrderComp = WrappedComponent => props => { 
    return <div ><WrappedComponent {...modifyRecord(props)} /></div> 
} 

const modifyRecord = (props) => { 
    //do something with props.record ..... 
} 

注意 - 確保modifyRecord製作道具的克隆然後修改它。切勿嘗試直接修改輸入屬性。

1

最後我做這樣的事情:

var filterVal = (props) => { 
    return {AwsAccountId: props.match.params.id}; 
}; 

<ReferenceArrayInput source="access_roles" reference="awsroles" label="AWS Roles" sort={{ field: 'id', order: 'DESC' }} filter={filterVal(props)} allowEmpty>