2017-07-18 1 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" /> 

filtre dynamique basée sur la valeur record.account

Je voudrais ajouter un filtre dynamique dans le ReferenceArrayInput basé sur une de la valeur dans le dossier. Cependant, cela ne fonctionne pas pour certaines raisons. Toute aide avec ceci est grandement appréciée.

Merci!

Répondre

0

Vous pouvez essayer l'entrée dépendante AOR.

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

Vous pouvez envelopper l'entrée SelectArray dans un HOC. De cette façon, vous pouvez intercepter l'enregistrement transmis à l'entrée SelectArray et le modifier selon vos besoins.

Quelque chose comme ça.

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

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

NOTE - assurez-vous que modifyRecord crée un clone d'accessoires, puis le modifie. N'essayez jamais de modifier les propriétés d'entrée directement.

1

je fini par faire quelque chose comme ceci:

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>