我目前有一个Angular 2前端+ Java后端应用程序。
有一个表格女巫由一些搜索标准组成。 在提交时,我继续搜索:一个返回结果的http get方法(复杂类型)。 我想使用路由在另一个页面上显示此结果。
我该如何处理?
我可以在路由器的导航方法中传递一些数据吗?
任何帮助将不胜感激。我会继续搜索。
答案 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();
}
}