c# - Angular 8 在网格行操作的新窗口中路由到另一个组件并传递整行
问题描述
在从网格中选择操作时,我想在新选项卡中打开另一个组件。同时我想传递整行数据,以便在新选项卡中打开另一个组件时加载数据。
我试过以下:
//redirects and load new component data correctly but opens in current tab instead of new tab
navigate(row: ExampleRow){
this.router.navigate(['/new-page/1'], {state: {data: {row}}}); }
//open new component in current window loaded with data but opens component with empty data in new tab as well
navigate(row: ExampleRow){
this.router.navigate([]).then(result => { window.open('/new-page/1', '_blank'); }); }
// Throws error
<a [routerLink]="['/new-page', row.id]" [state]="{ data: row }" >Navigate</a>
解决方案
当您打开一个新选项卡时,两个网页是分开的,并且状态不会延续。
navigate(row) {
localStorage.setItem('data', JSON.stringify(row));
window.open('/new-page/1', '_blank');
}
另一个.component.ts
ngOnInit(): void {
this.localTemp = JSON.parse(localStorage.getItem('data'));
// here you can choose to keep it in the localStorage or remove it as shown below
localStorage.removeItem('data');
}
推荐阅读
- mysql - 有phpmyadmin和apache,但需要登录数据库(Linux Mint)
- java - okhttp 分块上传大文件
- firebase - 我已删除 Firebase 托管。如何从我的网站中删除“未找到网站”?
- solidity - debot fetch 和 debot start 有什么区别?
- python - 查找重复元素的第一个索引
- isabelle - 案例 vs case_tac/induct vs induct_tac
- python - 在 python 中,仅提取文件的一部分时,如何确保单词保持在一行并且没有重复?
- python - Python交叉乘法与任意数量的列表
- python - Kivy Python:与类和实例方法混淆
- c++ - 为什么不使用 std::move 一切?