2017-08-16 11 views
1

と仮定、私はそれを行うことができますどのように、私はmoveFront()関数を呼び出すときcomponentAとcomponentBangle2の1つの子コンポーネントから別の子コンポーネントにデータを渡す方法は?

@Component({ 
    selector: 'appA', 
    templateUrl: './appA.html', 
    styleUrls: ['./appA.css'] 
}) 
export class componentA{ 
    constructor(private route: Router) { } 
    moveFront() { 
    this.route.navigateByUrl('componentB'); 
    } 
} 

@Component({ 
    selector: 'appB', 
    templateUrl: './appB.html', 
    styleUrls: ['./appB.css'] 
}) 
export class componentB{ 
    constructor(private route: Router) { } 
    moveBack() { 
    this.route.navigateByUrl('componentA'); 
    } 
} 

は今、componentBが呼び出される必要がありますが、私はコンポーネントにも同様にいくつかのデータを渡したいですか?

私のコンポーネントはどちらも子コンポーネントで、1つの子コンポーネントとの間でデータをやりとりしたいのです。どうすればいいの?角度でデータを渡すために

+0

私は新しいコンポーネントに移動する直前に、これを行うためにストアを使用し、2つの間で共有したいものをディスパッチします。他のコンポーネントが起動すると、そのストアにサブスクライブして取得します値。また、サービスを使用してサービス内の変数を設定することもできます.2番目のコンポーネントが作成されると、その変数をサービスからアクティブに取得できます。 – Kevin

+0

[2つの子コンポーネント間でデータを渡すAngular2の重複](https://stackoverflow.com/questions/38254379/angular2-passing-data-between-two-child-components) –

+0

'ngrx'またはサービスを使用 –

答えて

2

もう1つのオプション(文字列値のみを送信する場合)はRoute paramsを使用することです。クエリパラメータと同様、かなりぎりぎりに見えるURLの可能性もありますが、それはオプションです。あなたが代わりにrouter.navigateを使用することになり

constructor(private router: Router, private route:ActivatedRoute) { } 

:次に

this.router.navigate(['componentB', {myVar:'myValue'}]); 

のコンポーネントで、ルートのparamsを購読する:まず、あなたはActivatedRoute注入う

ngOnInit() { 
    this.route.params.subscribe((data) => { 
    this.myVar = data.myVar || 'defaultValue'; 
    }); 
} 

を繰り返しますが、この意志を文字列のためだけに働きます。このメソッドを使用して渡された任意のオブジェクトの角度呼び出し.toString()。より複雑なデータを送信したい場合は、サービス/ストアを使用する必要があります。

+0

JSON文字列を使用すると、たくさんのデータが利用できます –

関連する問題