在我的项目中,我有一个动态表。单击表的新标签栏上的任何行都应打开,我也可以将数据传递给新标签栏。如何使用角度6做到这一点?基本上,我想在新标签页中点击表格行时调用另一个组件。
答案 0 :(得分:1)
您可以使用window.open()
。
默认情况下,它会在新标签页中打开。
在路由器中添加一条路由以执行到组件的导航。 您可以处理路径中的参数。
您可以这样声明路线:
//router
const appRoutes: Routes = [
{ path: 'hero/:id', component: HeroDetailComponent }
];
接下来可以在组件中检索参数:
// Component code
constructor(
private route: ActivatedRoute,
private router: Router,
private service: HeroService
) {}
ngOnInit() {
this.hero$ = this.route.paramMap.pipe(
switchMap((params: ParamMap) =>
this.service.getHero(params.get('id')))
);
}
有关更多信息,请遵循指南https://angular.io/guide/router
从here的文档中可以找到:
open()方法打开一个新的浏览器窗口或一个新的选项卡,具体取决于您的浏览器设置和参数值。
根据我在Chrome上使用默认设置进行的测试,window.open('fooLink/')
正在打开一个新标签。
答案 1 :(得分:1)
不同的标签页是不同的应用实例,您无法在标签页之间传递数据。
除非您在新打开的标签页路线中将数据作为参数传递。
我的意思是您的路由应具有一个接受参数的网址,例如:
在html行中,您应该具有以下内容:
<a href="urlTo/example/test1/test2/test3" target="_blank"></a>
在路由中,您应该具有:
{
path: 'example/:param1/:param2/:param3',
component: YourComponent
}