Angular:在GET之后使用数据进行路由

时间:2017-04-18 12:51:19

标签: angular angular-ui-router angular2-routing angular2-forms

我目前有一个Angular 2前端+ Java后端应用程序。

有一个表格女巫由一些搜索标准组成。 在提交时,我继续搜索:一个返回结果的http get方法(复杂类型)。 我想使用路由在另一个页面上显示此结果。

我该如何处理?

我可以在路由器的导航方法中传递一些数据吗?

任何帮助将不胜感激。我会继续搜索。

3 个答案:

答案 0 :(得分:1)

正确的方法是使用服务在组件之间进行通信。

请从角度查看此链接以查看方式。 https://angular.io/docs/ts/latest/cookbook/component-communication.html

您还可以将参数传递给链接,并在路径调用的组件中读取该参数。

我希望这会有所帮助。

答案 1 :(得分:0)

这里基本的想法是你要sub,它是一个表单,基于查询想要在另一个组件中显示结果。

我的建议是使用routerLink和参数导航到另一个组件,就像你在表单中输入的那样,在第二个组件ngAfterViewInit中,你可以查询后端,这样你就可以在第二个组件中得到结果。 / p>

希望这会有所帮助。

答案 2 :(得分:0)

角度路由并不意味着传递大型对象。您可以传递路由参数和查询参数,但不能传递复杂对象。

如果需要跨组件共享数据,建议使用服务的共享实例来执行此操作。

建议对共享服务使用observable,但不是任何方式的要求。一个例子如下:

@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();     
  }

}