你可以看到我有一个方法,它按照我的预期工作得很好
loadTemplates(configUrl: any, templateId: string): Observable<any> {
this.getConfiguration(configUrl)
.pipe(
concatMap(configResponse =>
this.getTemplate(
CONFIGURATION_URL +
"templates/" +
configResponse.TemplateSettings.RootTemplate.Path,
configResponse
)
),
concatMap(rootTemplate =>
this.templateEngine.getAllChildTemplates(rootTemplate)
),
concatMap(childTemplates=>this.templateEngine.createTemplateToRender(childTemplates,""))
)
.subscribe(finalresponse=> {
debugger;
});
}
}
Run Code Online (Sandbox Code Playgroud)
执行
在第 4 个要点中,我将一个空参数传递给createTemplate方法,实际上我必须传递basedntheTemplateresponse(在代码rootTemplate中)。现在我正在通过设置执行getAllChildTemplates时进行调整
getAllChildTemplates(parentTemplate: string) {
this.currentrootTemplate = parentTemplate;
var services = this.getChildTemplateServiceInstance(parentTemplate);
return forkJoin(services);
}
Run Code Online (Sandbox Code Playgroud)
有没有正确的方法将rootTemplate从管道本身传递到下一个concatMap?我不确定这是正确的方法。
您可以将内部 Observable 的结果映射到当前响应和前一个响应的数组中:
concatMap(rootTemplate =>
this.templateEngine.getAllChildTemplates(rootTemplate).pipe(
map(childTemplates => [rootTemplate, childTemplates])
)
),
concatMap(([rootTemplate, childTemplates]) =>
this.templateEngine.createTemplateToRender(childTemplates, rootTemplate)
)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1512 次 |
| 最近记录: |