あなたがたparamsと共に、何が起こるかである、複雑なデータオブジェクトリテラルのようなタイプの、またはあなたがURLに表示されないようにする任意のデータを渡すためにサービスを使用する必要が正しいです。
データサービス
import { Injectable } from '@angular/core';
@Injectable()
export class DataService {
data: {[key: string]: any};
}
コンポーネントX
import {Component} from '@angular/core'
import { DataService } from './data.service';
@Component()
export class X {
get data(): {[key: string]: any}{
return this.dataService.data;
}
set data(value: {[key: string]: any}) {
this.dataService.data = value;
}
constructor(public dataService: DataService) { }
submitForm(): void {
this.dataService.set(this.order); // Store order for use by next component
this.orderService.saveOrder(this.order)
.then(() => this.router.navigateByUrl('/y'));
}
}
コンポーネントY
import {Component} from '@angular/core'
import { DataService } from './data.service';
@Component()
export class Y {
data: { [key: string]: any };
get data(): {[key: string]: any}{
return this.dataService.data;
}
set data(value: {[key: string]: any}) {
this.dataService.data = value;
}
constructor(public dataService: DataService) { }
ngOnInit() {
this.data = this.dataService.get(); // Route component loads and you retrieve the data
}
}
あなたはトンをお勧めしますサービスを強化し、それをRouteDataService
と呼びますが、これによりコンポーネント間の通信が可能になります。
すでにデータがある場合は、別のリクエストをしたくない場合があります。これを1〜2回行うことは害ではありませんが、アプリケーションが大きくなるにつれて、この戦略を実行するとパフォーマンスが低下します。
それ以外の場合は、コントローラのロジックとテンプレートの複雑さを維持するために、テンプレート駆動型よりも反応的なフォームが優先されますが、それは単なる設定であることを間違ってはいません。あなたが反応形式をチェックアウトしていない場合、これはまともなイントロですtutorialあなたは両方を比較することができます。
パラメータとして注文を受け取るルートを指定する必要があります。 – Fals
@Inputを使用して他のコンポーネントに値を渡すことも、共有サービスを使用することもできます。あなたのhtml構造を共有しているなら、もっと助けることができます。 – omeralper