2016-12-25 26 views
1

我有一个角2成分,使分贝调用呈现其结果,如重新显示的角2成分的结果别处在DOM

<div class="row flex-items-xs-middle flex-items-xs-center" *ngFor="let step of steps; let i = index"> 
    stuff here.... 
    <mydbresults [ref]="step._id"></mydbresults> 
    more stuff here.... 
</div> 

是正在由下式给出一个_id ref上的部件我步骤数组在我的父类/组件。有一个'@Input()引用,用于进行REST调用来拉取一些JSON并使用其模板进行渲染。

这工作正常,我得到我的结果为每一步。现在我想在* ngFor循环之外的DOM的其他地方显示集合集合。

<summary> 
    all my db results here... 
</summary> 

我可以写,基本上使所有步骤的成分,但是,因为我已经获取的结果我宁可不要再犯到数据库的调用,如果我已经在我的DOM的结果在其他地方。

如何重新呈现DOM中其他地方的* ngFor中呈现的所有组件的结果?

回答

0

您的myDbResults组件是否输出db调用的结果,例如,

//Use this to output the result after your API call returned from the database. 
@Output() 
private onDbResultFetched = new EventEmitter(); 

您的父母组件侦听此事件,收集所有的结果,然后它向下传递通过输入属性为summary组件。

(可选)您可以从myDbResults组件发出另一个事件,该组件向所有API调用的父组件发出信号,以便父组件只能在完成后才开始处理结果。

如果您还想重新使用结果标记,请创建一个新组件,该组件实质上是一个无状态组件,它将API调用的结果作为输入并使用myDbResults组件的标记。有myDbResults以及summary使用该组件。

+0

我不想仅仅结合结果,而是结合演示文稿。因此,例如,如果在组件中,动态生成的模板具有特定于该实例的格式的结果,我希望动态生成的组件与* ngFor循环中的完全相同。就像镜像上面所说的组件,也许通过钩住它的id或其他东西? – code4cause

+0

@ code4cause你可以创建另一个基本上是你的标记''标记的组件,但不调用任何API(如此无状态的组件)。然后让你的'myDbResults'和'summary'组件使用该组件 –