2016-12-25 27 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'組件使用該組件 –