【Angular2】遍歷巢狀實體生成陣列
阿新 • • 發佈:2019-01-23
前言
需要根據實體生成一個數組,存放初始資料
實體是ExamPaperModel(試卷),其中一個屬性為QuestionTypeList,包含的是實體QuestionTypeModel(題型),題型實體中有一個屬性為QuestionMainList,包含的是實體QuestionMainModel(題幹)
現在整個試卷實體是從後臺返回,然後傳遞到該元件,該元件要在頁面渲染前生成陣列存放初始的題幹答題狀態
程式碼
answers:Answer[]=[]; //宣告一個空陣列,記得加後面的=[]
ngOnInit() {
setTimeout(() => {
this .exampaper.paperQuestionTypeList.forEach((val, index, array) => {
//val為當前值,index為當前索引,array為整個集合
(<PaperQuestionTypeModel>val).questionMainList.forEach((val, index, array) => {
//宣告一個answer物件存放初始值
let answer = new Answer;
answer.id = (<QuestionMainModel>val).id;
answer.done = true ;
answer.answer = "";
this.answers[index] = answer;
})
})
}, 0);
}
在這裡最好把程式碼放在setTimeout,否則會報一個 Cannot read property ‘paperQuestionTypeList’ of undefined 的錯誤
小結
最後沒有用這個解決方案,利用Angular的其它機制實現了功能
但是,在生成陣列的過程中,遇到了一些問題,所以在此記錄一下