Html 是否可以使用For循环动态填充Angular 2材质选项卡?

Html 是否可以使用For循环动态填充Angular 2材质选项卡?,html,angular,for-loop,tabs,angular-material,Html,Angular,For Loop,Tabs,Angular Material,我需要在Angular 2站点上使用For循环动态填充大量选项卡,该循环使用subscribe从数据库服务获取数据,我想知道这是否可能 我的数据集被分类:A、B和C,它们都有一个子类1和2。所以我想让我的结果动态创建3个选项卡(选项卡A、选项卡B和选项卡C)。到目前为止,我有这个工作 然后,我需要这些选项卡中的每一个来显示它们的子类的数据。到目前为止,循环运行了3次并提供了所需的数据,但是每个页面都只显示C类的数据,因为它是最后一个运行的,并且模型用它的所有数据更新 以下是我到目前为止的情况 c

我需要在Angular 2站点上使用For循环动态填充大量选项卡,该循环使用subscribe从数据库服务获取数据,我想知道这是否可能

我的数据集被分类:A、B和C,它们都有一个子类1和2。所以我想让我的结果动态创建3个选项卡(选项卡A、选项卡B和选项卡C)。到目前为止,我有这个工作

然后,我需要这些选项卡中的每一个来显示它们的子类的数据。到目前为止,循环运行了3次并提供了所需的数据,但是每个页面都只显示C类的数据,因为它是最后一个运行的,并且模型用它的所有数据更新

以下是我到目前为止的情况

classdata.component.html


子类名称
价值
{{subassResult.Sub_Class_Name}
{{subassResult.Value}

您正在为每个父类获取每个子类,但您正在将每个结果重新分配给类变量
this.subassResults
。基本上,您正在用当前结果覆盖以前的每个结果。这就是为什么每页只显示C类的数据

有许多不同的解决方案,你可以如何解决这个问题

解决方案可能是您正在使用
forkJoin
Observable,并将父类及其子类的结果保存在自己的对象中:

this.databaseService.getClass().pipe(
开关映射(classResults=>{
const subassrequests=classResults.map(
classResult=>this.dabaseService
.getSubClass(类结果)
.pipe(映射(subassResults=>{classResult,subassResults}))
)
返回forkJoin(子类请求)
})

).subscribe(results=>this.results=results)感谢您抽出时间整理这些内容。我正试图实施它,但有一些问题。我的getClass和getSubClass都需要诸如getClass(x,x,x)和getSubClass(classid,x,x)之类的变量。这些变量被传递到数据库,以便在各自的查询中使用。这会导致并发症吗?很抱歉没有包括在我的OP中,但我认为它们不会引起问题。这应该没有问题。您面临哪些问题?我的linter显示了以下内容:类型为“(subassReslts:Observable)=>void”的参数不能分配给类型为“UnaryFunction”的参数。类型“void”不可分配给类型“Observable”。[ts]逗号运算符的左侧未使用,并且没有副作用。我更新了答案。我忘记了databaseService.GetSubclass()上的映射运算符,谢谢您给我回复--我现在收到以下错误:ts(101,49):错误TS2695:逗号运算符的左侧未使用,没有副作用。错误TS2339:类型“ClassDataComponent”上不存在属性“results”。