0

私は現在、角度2のフロントエンド+ Javaバックエンドアプリケーションを持っています。角度:GET後のデータによるルーティング

いくつかの検索条件で構成されたフォームウィッチがあります。 送信時に、私は検索に進みます:結果を返すhttp getメソッド(複合型)。 ルーティングを使用して、この結果を別のページに表示したいとします。

どのように処理すればよいですか?

ルータのnavigateメソッドでいくつかのデータを渡すことはできますか?

ご協力いただければ幸いです。私は検索を続けます。

答えて

1

正しい方法は、サービスを使用してコンポーネント間で通信することです。

どのように角度からこのリンクを確認してください。 https://angular.io/docs/ts/latest/cookbook/component-communication.html

リンクにパラメータを渡して、ルートによって呼び出されたコンポーネントのそのパラメータを読み取ることもできます。

こちらがお役に立てば幸いです。

+0

これは私が探していたものです。どうもありがとう。 – bchampion

0

ここで基本的な考え方は、フォームをサブクラス化し、クエリに基づいて結果を別のコンポーネントに表示したい場合です。

私が提案したのは、routerLinkとパラメータをフォームと2番目のコンポーネントに入力したものです。ngAfterViewInit 2番目のコンポーネントで結果を取得できるようにバックエンドに問い合わせることができます。

これが役に立ちます。

0

角度ルーティングは大きなオブジェクトを渡すためのものではありません。複雑なオブジェクトではなく、ルートパラメータとクエリパラメータを渡すことができます。

コンポーネント間でデータを共有する必要がある場合は、サービスの共有インスタンスを使用することをお勧めします。

共有サービスには監視可能なサービスを使用することをお勧めします。例は次のようになります。

@Injectable() 
export class MySharedService { 
    // BehaviorSubjects start with a default value and replay the latest value to components that subscribe at any point in the lifecycle. 
    // Subject types do not start with a default value and do not replay the latest value, so if a component subscribes after it's fired, it won't receive the value. 
    private someStringDataSource = new BehaviorSubject<string>(''); 

    someString$ = this.someStringDataSource.asObservable(); 


    setSomeString(newString: string) { 
    this.someStringDataSource.next(newString); 
    } 

} 



export class AppComponent implements OnInit, OnDestroy { 
    sub: Subscription; 

    constructor(private sharedService: MySharedService) { } 

    ngOnInit() { 
    // subscribe to data from service 
    this.sharedService.someString$.subscribe(data => //do something with data); 


    //send data to service 
    this.sharedService.setSomeString('newString'); 
    } 

    ngOnDestroy(){ 
    this.sub.unsubscribe();  
    } 

} 
関連する問題