【发布时间】:2019-01-30 23:21:55
【问题描述】:
我有大量数据要显示在屏幕上。我需要提供一个简化列表,以便用户可以选择其中一项并查看其详细信息。
假设我有一个组件 SimpleListComponent,它将保存数据并呈现一个简化的视图
export class SimpleListComponent{
@Input() data: any[];
}
html
<ul>
<li *ngFor="let item of data">
<a>{{item.name}}</a>
</li>
</ul>
用户应该能够点击其中一个项目并在新选项卡中打开包含该项目详细信息的视图。 所以如果我有第二个组件
export class DetailedViewComponent{
@Input() item: any;
}
<div>
<!--All fields of item here-->
</div>
编辑:这里的问题是我正在呈现来自非常定制的搜索的数据,因此我没有 ID 来从服务器获取详细信息或任何其他方式来再次获取数据。所以唯一的方法就是以某种方式传递已经加载的数据。
我怎样才能在角度上实现这一点?将项目数据提供给第二个组件并在新选项卡中打开它?
【问题讨论】:
-
target="blank" on link 或其他
-
例如:window.open('/login', '_blank'),如果你想从 .ts 打开
-
您是指新的浏览器标签,还是网页中的某种新的 HTML 标签?当然,在同一个 Angular 应用程序上打开两个浏览器选项卡是可能的,但是如果您需要它们相互交互,这会增加很多复杂性——因此在您的页面中引入某种虚拟选项卡可能会更好。
-
@MarkHughes 感谢您的评论。所以这将是浏览器中的一个新选项卡,但我不需要绑定数据或任何涉及选项卡之间交互的东西。这只是为了以更清晰的视图呈现数据。我想我可以通过 target="_blank" 实现这一点,但我不确定如何将我的项目传递给新组件
-
你不能轻易地在浏览器标签之间传递这样的东西。有一些方法可以做到这一点,但我主要称它们为黑客......所以你的新标签需要从服务器加载它需要的数据。如果页面中有“虚拟选项卡”,则可以传递整个对象 - 交叉选项卡部分使这变得更加困难。
标签: angular typescript angular2-components