0
중첩 된 배열로 데이터를 검색하는 중 문제가 발생했습니다 (내 두 번째 수준 배열의 데이터가 중복 됨). 문제는 내가 데이터를 반복하고있는 것처럼 보이지만 문제를 해결하기 위해 무엇을해야할지 모르겠습니다. 명확히하기 위해 아래에 예제가 있습니다 (문제는 array2 속성과 함께 나타납니다).Reactive Forms (FormArray)에 중첩 된 배열을 포함하는 데이터 검색
{{nestedForm.value | json}}
{
"nestedOne": "Level One",
"array1": [
{
"nestTwo": "A",
"array2": [
"Tag A",
"Tag B"
]
},
{
"nestTwo": "B",
"array2": [
"Tag A",
"Tag B"
]
}
}
:
원본 데이터 개체 아래
nestedData = {
nestOne: "Level One",
array1: [
{
nestTwo: "A",
array2: ["Tag A"]
},
{
nestTwo: "B",
array2: ["Tag B"]
}
]};
지금이보고 결과 인 반응성 코드
nestedForm: FormGroup; let array_one = new FormArray([]); let array_two = new FormArray([]); // If an If block to check if 'array1' property is present; if (this.nestedData['array1']) { for (let ar1 of this.nestedData.array1) { // IF BLOCK FOR array2 if (ar1['array2']) { // For loop to get array2 data for (let ar2 of ar1.array2) { array_two.push( new FormControl(ar2, Validators.required), ) } } //IF Block Ends array_one.push( new FormGroup({ 'nestTwo': new FormControl(ar1.nestTwo), 'array2': array_two }) ); } } this.nestedForm = this.fb.group({ 'nestedOne': [this.nestedData.nestOne], 'array1': array_one });
입니다
보시다시피. 태그 A와 태그 B는 둘 다 array2 속성에 나타나지 않아야합니다. 배열 2 데이터를 검색 한 다음 Reactive FormArray로 푸시하는 동안 부모 배열 1에 포함 된 데이터를 유지하는 가장 좋은 방법을 모르겠습니다.
고맙습니다! 나는이 문제를 잠시 고민하고 있으며 문제는 코드에서 array_two 변수를 어디에 두는 지 알지 못했다. –
나는 그것이 당신을 위해 잘 된 것을 기쁘게 생각합니다. 내 대답을 지금 받아 들일 수 있니 .. lol –