@ngrx wählt ein bestimmtes Statussegment aus dem Speicher aus, wenn eine Smart-Komponente rekursiv verwendet wird

9

Ich bin irgendwie neu bei ngrx und habe dieses kleine Problem entdeckt, das ich bis jetzt noch nicht gelöst habe.

Grundsätzlich habe ich eine ListComponent , die ein Array von ListItemComponent s aus einem ngrx speichert.

%Vor%

Nun, in ListItemComponent , möchte ich unter bestimmten Umständen ein weiteres ListComponent rendern, zu dem ich Objekte hinzufügen kann, aber das funktioniert nicht, da ich einen Maximum call stack size exceeded -Fehler erhalte.

Meine Vermutung ist, und korrigiere mich, wenn ich falsch liege, da das verschachtelte ListComponent auf das gleiche Stück des Status zugreift wie das root ListComponent , es versucht nur, die gleiche Liste immer wieder zu verschachteln und zu rendern wieder in die Unendlichkeit.

Hier also die Frage, wie ich meine Selektoren zusammenstellen soll, um jedem verschachtelten ListComponent ?

den richtigen Einstiegspunkt in der Statusbaumstruktur zu geben

Bearbeiten

Hier ist ein funktionierendes Stackblitz-Projekt , jetzt die Logik in meiner App, um List ins Innere zu rendern a ListItem ist anders, aber das Problem ist das gleiche.

    
Osman Cea 06.01.2018, 10:10
quelle

1 Antwort

0

Ich denke, du hast recht:

  

Meine Vermutung ist, und korrigieren Sie mich, wenn ich falsch liege, da die verschachtelte ListComponent auf das gleiche Stück Status wie die Root-ListComponent zugreift, nur versucht, die gleiche Liste zu verschachteln und immer wieder in Unendlichkeit zu rendern .

Versuchen Sie, ListComponent zu aktualisieren, um eine Komponenteneingabevariable von ListItemComponent zu akzeptieren. Siehe Arbeitsbeispiel Ссылка

In diesem Beispiel gibt der 5. ListItemComponent auch ListComponent wieder. Wenn Sie jedoch auf die Schaltfläche "Element zur Liste hinzufügen" auf dieser fünften ListItemComponent klicken, fügt der Code immer noch die neuen Elemente zur übergeordneten Liste hinzu. Ich schätze, Sie werden Ihre Logik für die Handhabung aktualisieren wollen. Nicht sicher, was du erreichen willst.

Das Kernproblem ist, dass die Liste sich selbst generiert. Wenn also eine Liste eine andere Liste generiert, tritt das rekursive Problem auf. Wenn Sie Komponenten-Eingabevariablen verwenden, können Sie verhindern, dass die Liste sich selbst generiert und das rekursive Problem beseitigt.

Aktualisierung:

Ich kam zu dieser Antwort alleine, aber ich habe gerade bemerkt, dass @FanCheung in den Kommentaren zuvor vorgeschlagen hat, was im Grunde diese Lösung ist.

    
John 09.01.2018 11:20
quelle