Wymiana danych pomiędzy komponentami w Angular

0

Witam.
Potrzebuje propozycji, nakierowania na rozwiązanie pewnego "problemu". W systemie, który piszę mam dodawanie dokumentu i ten dokument ma swoje pozycje z ceną, ilością itp.
Chciałbym, aby uzytkownik, który kliknie na Dodaj przeszedł na osobny komponent WybierzTowar, zaznaczył towary, które chce mieć na dokumencie i wrócił do dokumentu, który będzie wyświetlał te wybrane pozycje. Przejście na komponent z towarami nie stwarza problemów. Kłopot zaczyna się z powrotem do tworzonego dokumentu.
Jak przesłać wybrane pozycje do komponentu z dokumentem?
Jak zapamiętać inne ustawienia dokumentu przed przejście do wyboru pozycji?
Modal niestety odpada, ponieważ nie działa to za dobrze na telefonach. Jakiś dropdown jest słabo wydajny przy dużej ilości towarów w bazie.

0

Możesz użyć serwisu, który przechowywałby aktualnie edytowany dokument. Serwisy w Angularze są singletonami, więc wstrzykując go do różnych komponentów masz cały czas tę samą instancję.

0

A jeśli dokument zapisze lub anuluje to wystarczy, że ustawie go na null? Trzeba jakoś ten obiekt "wyzerować", żeby nie było głupot przy nowym dokumencie.

0

Tak, musisz sam zadbać o to, aby w serwisie był poprawny dokument, lub go nie było.

0

Przekaż go sobie do komponentu i edytuj, a z powrotem możesz sobie zrobić zdarzenie dotyczące edycji elementu wywoływane np. przez przycisk zapisz, które będzie Ci odświeżało dany element.

Przekazywanie do komponentu: https://angular.io/tutorial/toh-pt3

0

A jak zablokować ten komponent żeby można było wejść do wyboru towaru tylko z pozycji dodawania do dokumentu?

0

To znaczy? Jakie masz inne możliwości?

0

Jeśli znajdzie się jakiś mądry i zobaczy jaki jest routing do tego komponentu to będzie sobie wchodził. Musiałbym przetestować co się stanie w takim przypadku, ale lepiej by było to zablokować.

0

RouteGuard'a zrób sobie. Jak zaimplementujesz metodę CanActivate prawdopodobnie (nie sprawdzałem) masz możliwość sprawdzenia skąd dany request wychodzi więc możesz sprawdzić czy poprzedni komponent jest tym na którym masz przycisk do edycji.

RouteGuard: https://thinkster.io/tutorials/building-real-world-angular-2-apps/route-guards

0

A jak w przypadku guzika wstecz na systemach mobilnych. Mam dostęp do takich rzeczy, mogę to jakoś wyłapać?

1 użytkowników online, w tym zalogowanych: 0, gości: 1