別のコンポーネントにデータを渡し、同様に他のコンポーネントのメソッドにアクセスするソリューションを探しています (両方とも並列コンポーネントです)。
たとえば、home.ts
と の2 つのコンポーネントがありますmap.ts
。 にデータを取得しmap.ts
て渡す必要がありhome.ts
、その逆も同様です。
ベストアンサー1
サービスを利用してデータを転送できます。
コンポーネントを切り替えるときにデータを保持するサービスを作成します。以下に例を示します。
import { Injectable } from '@angular/core';
@Injectable()
export class TransfereService {
constructor(
private router:Router,
private companyServiceService:CompanyServiceService
) { }
private data;
setData(data){
this.data = data;
}
getData(){
let temp = this.data;
this.clearData();
return temp;
}
clearData(){
this.data = undefined;
}
}
ここで、送信者と受信者の 2 つのコンポーネントについて考えます。
送信者コード: このコードは、データをサービスに設定し、受信者に移動します。
import { Router } from '@angular/router';
import { TransfereService } from './services/transfer.service';
export class SenderComponent implements OnInit {
constructor(
private transfereService:TransfereService,
private router:Router) {}
somefunction(data){
this.transfereService.setData(data);
this.router.navigateByUrl('/reciever');//as per router
}
}
受信者のコード: このコードはサービスからデータを取得し、データをクリアします。
import { Router } from '@angular/router';
import { TransfereService } from './services/transfer.service';
export class RecieverComponent implements OnInit {
data = this.transfereService.getData();
constructor(
private transfereService:TransfereService,
private router:Router) {
if(this.data){
// do whatever needed
}
else{
this.router.navigateByUrl('/sender');
}
}
}
ぜひチェックしてみてくださいファイアシップデモ同じく。役に立ちます。