我想知道如何使用路由器在两个组件之间传递数据。下图是我的组件视图的屏幕截图。
当我点击按钮查看报告时,我需要用每个报告的数据“调用”另一个组件。
下面几行代码是调用viewFuelReport()
方法的按钮查看报表;它将在新选项卡中打开具有数据的其他组件。
<button type="button" (click)="viewFuelReport()" class="btn btn-success">
View report
</button>
viewFuelReport(){
this.router.navigate([]).then(result => {
window.open("/pages/view-report", "_blank");
});
}
如何在Angular中使用Router将数据从一个组件传递到另一个组件?
2条答案
按热度按时间oxf4rvwz1#
如果要将子组件的数据共享到父组件,可以使用
@Output()
和EventEmitter<>
。或者,如果您试图在两个不相关的组件之间共享数据,则可以通过
Service
使用BehaviorSubject()
;它也适用于在父组件和子组件之间共享数据。子到父:使用
@Output()
和EventEmitter<>
共享数据。parent.component.ts
子组件.ts
无关组件:通过服务共享数据
data.service.ts
home.component.ts
about.component.ts
cnjp1d6j2#
window.open
看起来非常糟糕。请使用this.router.navigate(['/heroes']);
。如果我理解正确的话,你有一个项目列表,当你点击其中一个项目时,该项目的详细信息页面应该打开?
最好的做法是允许详细路由有一个属性来设置。Angular Routing & Navigation页面非常完整。它显示你应该使用
:id
-{ path: 'hero/:id', component: HeroDetailComponent }
。当你打开详细页面时,你会得到id变量,然后获取它的数据。