Açısal 2 rotalarımdan birinde ( FirstComponent ) bir düğme var
first.component.html
<div class="button" click="routeWithData()">Pass data and route</div>
Benim amaç elde etmektir:
Düğme koruması -> verileri korurken ve diğer bileşeni yönerge olarak kullanmadan başka bir bileşene yönlendirin.
Ben de bunu denedim ...
1. YAKLAŞIM
Aynı görünümde, kullanıcı etkileşimini temel alarak aynı verileri topluyorum.
first.component.ts
export class FirstComponent {
constructor(private _router: Router) { }
property1: number;
property2: string;
property3: TypeXY; // this a class, not a primitive type
// here some class methods set the properties above
// DOM events
routeWithData(){
// here route
}
}
Normalde tarafından İkinci Bileşene yönlendiririm
this._router.navigate(['SecondComponent']);
sonunda veriyi
this._router.navigate(['SecondComponent', {p1: this.property1, p2: property2 }]);
oysa parametrelerle bağlantının tanımı
@RouteConfig([
// ...
{ path: '/SecondComponent/:p1:p2', name: 'SecondComponent', component: SecondComponent}
)]
Bu yaklaşım ile ilgili sorun sanırım in-url karmaşık veri (örneğin property3 gibi bir nesne ) geçemez ;
2. YAKLAŞIM
Bir alternatif, FirstComponent'te direktif olarak SecondComponent'i dahil etmek olabilir.
<SecondComponent [p3]="property3"></SecondComponent>
Ancak ben bu bileşene yönlendirmek istiyorum , dahil değil!
3. YAKLAŞIM
Burada gördüğüm en uygun çözüm, Hizmet (ör. FirstComponentService) kullanmak için
- depolamak FirstComponent içinde routeWithData ile (_firstComponentService.storeData ()) () verileri
- almak içinde (_firstComponentService.retrieveData ()) verileri ngOnInit () içinde SecondComponent
Bu yaklaşım mükemmel bir şekilde uygulanabilir gibi görünse de, bunun hedefe ulaşmanın en kolay / en zarif yolu olup olmadığını merak ediyorum.
Genel olarak , özellikle mümkün olan daha az miktarda kodla , bileşenler arasında veri iletmek için başka potansiyel yaklaşımları kaçırıp kaçırmadığımı bilmek istiyorum
stateiçin PR'ı kontrol ederek verileri rotalar arasında iletmek için yeni bir özelliğe sahiptir . Burada