Di salah satu template Angular 2 route saya ( FirstComponent ) saya memiliki tombol
first.component.html
<div class="button" click="routeWithData()">Pass data and route</div>
Tujuan saya adalah mencapai:
Klik tombol -> rute ke komponen lain sambil menyimpan data dan tanpa menggunakan komponen lain sebagai arahan.
Ini yang saya coba ...
PENDEKATAN 1
Dalam tampilan yang sama saya menyimpan pengumpulan data yang sama berdasarkan interaksi pengguna.
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
}
}
Biasanya saya akan rute ke SecondComponent oleh
this._router.navigate(['SecondComponent']);
akhirnya melewati data dengan
this._router.navigate(['SecondComponent', {p1: this.property1, p2: property2 }]);
sedangkan definisi tautan dengan parameter adalah
@RouteConfig([
// ...
{ path: '/SecondComponent/:p1:p2', name: 'SecondComponent', component: SecondComponent}
)]
Masalah dengan pendekatan ini adalah saya kira saya tidak bisa melewatkan data yang kompleks (misalnya objek seperti property3) di-url;
PENDEKATAN 2ND
Alternatif akan menyertakan SecondComponent sebagai arahan dalam FirstComponent.
<SecondComponent [p3]="property3"></SecondComponent>
Namun saya ingin merutekan ke komponen itu, tidak termasuk!
PENDEKATAN 3RD
Solusi paling layak yang saya lihat di sini adalah menggunakan Layanan (mis. FirstComponentService) untuk
- menyimpan data (_firstComponentService.storeData ()) pada routeWithData () di FirstComponent
- mengambil data (_firstComponentService.retrieveData ()) di ngOnInit () di SecondComponent
Sementara pendekatan ini tampaknya sangat layak, saya bertanya-tanya apakah ini adalah cara termudah / paling elegan untuk mencapai tujuan.
Secara umum saya ingin tahu apakah saya kehilangan pendekatan potensial lain untuk meneruskan data antar komponen, terutama dengan jumlah kode yang lebih sedikit
state
cek PR untuk detail lebih lanjut. Beberapa informasi berguna di sini