1

I have response like below

    dropdown1: {enabled: true, label: "Country", eformVisible: false}
dropdown2: {enabled: false, label: "Dropdown2 Label", eformVisible: false, }
dropdown3: {enabled: false, label: "Dropdown3 Label", eformVisible: false, mandatory: "NOT_MANDATORY[enter link description here][1]", order: 32}
dropdown4: {enabled: false, label: "Dropdown4 Label", eformVisible: false, }
dropdown5: {enabled: false, label: "Dropdown5 Label", eformVisible: false, }
text1: {enabled: true, label: "Text1 Custom field", eformVisible: false, mandatory: "ADMIN_API", order: 0, …}
text2: {enabled: false, label: "Text2 Label ", eformVisible: false, mandatory: "NOT_MANDATORY", order: 1, …}
text3: {enabled: false, label: "Text3 Label ", eformVisible: false, mandatory: "NOT_MANDATORY", order: 2, …}
text4: {enabled: false, label: "Text4 Label ", eformVisible: false, mandatory: "NOT_MANDATORY", order: 3, …}
text5: {enabled: false, label: "Text5 Label ", eformVisible: false, mandatory: "NOT_MANDATORY", order: 4, …}
text6: {enabled: false, label: "Text6 Label ", eformVisible: false, mandatory: "NOT_MANDATORY", order: 5, …}

convert text 1,text2,text3 into text array and same dropdown object move into dropdown array .finally i need to bind this textbox and dropdown value using for loop if i am not wrong . this below i have written sample code

[1]: https://stackblitz.com/edit/angular-ivy-zzeijq

but from this difficult to find which one is textbox and drop down to bind in angular.

1
  • Please include all relevant code in the question itself, not just on StackBlitz or any external site. See How to Ask for more tips. Commented Apr 19, 2021 at 16:19

3 Answers 3

3

Create a function that helps you to filter data according to the beginning of the string (data key):

function filter(data, query){
  return Object.values(Object.keys(data)
  .filter(key => new RegExp('^' + query, 'g').test(key))
  .map((key) => data[key]));
}

And then use it according to your needs:

console.log(filter(data,'date'));
console.log(filter(data,'text'));
console.log(filter(data,'dropdown'));

Insights

Sign up to request clarification or add additional context in comments.

1 Comment

francesco your answer is working thank you.
1

You can browse object by keys and build groupedItem object like following :

    const obj = {
        dropdown1: {enabled: true, label: "Country", eformVisible: false},
        dropdown2: {enabled: false, label: "Dropdown2 Label", eformVisible: false, },
        dropdown3: {enabled: false, label: "Dropdown3 Label", eformVisible: false, mandatory: "NOT_MANDATORY[enter link description here][1]", order: 32},
        dropdown4: {enabled: false, label: "Dropdown4 Label", eformVisible: false, },
        dropdown5: {enabled: false, label: "Dropdown5 Label", eformVisible: false, },
        text1: {enabled: true, label: "Text1 Custom field", eformVisible: false, mandatory: "ADMIN_API", order: 0},
        text2: {enabled: false, label: "Text2 Label ", eformVisible: false, mandatory: "NOT_MANDATORY", order: 1},
        text3: {enabled: false, label: "Text3 Label ", eformVisible: false, mandatory: "NOT_MANDATORY", order: 2},
        text4: {enabled: false, label: "Text4 Label ", eformVisible: false, mandatory: "NOT_MANDATORY", order: 3},
        text5: {enabled: false, label: "Text5 Label ", eformVisible: false, mandatory: "NOT_MANDATORY", order: 4},
        text6: {enabled: false, label: "Text6 Label ", eformVisible: false, mandatory: "NOT_MANDATORY", order: 5}
    };
    
    const grouped = { text: [], dropdown: [] };
    Object.keys(obj).forEach((key) => {
        (key.includes('text')) ? grouped.text.push({...obj[key], initialKey: key}) : grouped.dropdown.push({...obj[key], initialKey: key});
    });

Comments

1

My solution to these types of problems follow this structure

const children = Object.keys(obj)
.filter(key => <return true for the keys I want>)
.map(key => <Construct textbox based on obj[key]>)

Fill in the blanks and this will output an array of elements which can be bound to your parent element

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.