Angular 基于另一个可观察对象对其进行过滤

Angular 基于另一个可观察对象对其进行过滤,angular,stream,rxjs,filtering,observable,Angular,Stream,Rxjs,Filtering,Observable,我正试图通过基于其他观测值发出的事件过滤它们来映射观测值。这是我的挑战: 如何将事件的属性馈送到筛选器 下面是一个示例,我想用它来获取实体。目前它正在工作,因为我已经硬编码了关系ID。我想从评论中提到的观测值中读取这些ID 导出类AppComponent实现OnInit{ 当前检查美元; 当前飞机美元; 当前配置$; 恩戈尼尼特(){ 常数飞机$=可观测的([ {id:1,呼号:'D-AISY',配置id:100}, {id:2,呼号:'D-OOBE',配置id:200}, {id:3,呼号:'

我正试图通过基于其他观测值发出的事件过滤它们来映射观测值。这是我的挑战:

如何将事件的属性馈送到筛选器

下面是一个示例,我想用它来获取实体。目前它正在工作,因为我已经硬编码了关系ID。我想从评论中提到的观测值中读取这些ID

导出类AppComponent实现OnInit{
当前检查美元;
当前飞机美元;
当前配置$;
恩戈尼尼特(){
常数飞机$=可观测的([
{id:1,呼号:'D-AISY',配置id:100},
{id:2,呼号:'D-OOBE',配置id:200},
{id:3,呼号:'D-OOOO',配置id:100}
]);
施工检查$=可观察的([
{id:10,航空器id:3},
{id:20,航空器id:2}
]);
常量配置$=可观测的([
{id:100,名称:'默认CRJ900配置'},
{id:200,名称:'默认B737配置'}
]);
此.currentInspection$=inspections$.pipe(
映射(检查=>inspections.find(检查=>inspection.id==20))
);
//如何获取此.currentInspection$的id属性而不是此处的1?
此.currentAircraft$=飞机$.pipe(
map(airpair=>airpair.filter(a=>a.id==1))//我不想硬编码“1”
);
//如何获取此.currentAircraft$的configurationId属性而不是此处的100?
此.currentConfiguration$=配置$.pipe(
map(configurations=>configurations.filter(c=>c.id==100))//我不希望对100进行硬编码
);
}
}
下面是一个活生生的例子:

我曾尝试使用mergeMap将第一个可观察对象与后一个可观察对象合并,并从内部进行过滤,但这感觉像是在反对被动方式


如果我从一个错误的角度来处理问题,请给我指出正确的方向。

我不确定你想要什么样的行为,但我从我对你的问题的理解中总结了一些东西,希望它能帮助你知道你需要走的方向


查看。

你能提供更多关于你想要产生什么行为的细节吗?是否应该按照值流过滤项目?我想过滤aircraft$以获得currentInspection$的configurationId属性上的currentAircraft$depdending。并根据currentAircraft$的configurationId属性从$configurations中筛选出currentConfiguration$。目前1和100是硬编码的。我知道,但它与纯数组有什么不同?您将如何确定使用哪个inspectionId。当你有了id,你就可以根据当时其他观测值中的发射值来过滤它,或者?我完全有可能试图在不必要的地方强制使用观测值。您是否建议订阅流并将实例变量设置为事件的值?这取决于您想要实现什么。如果您希望过滤器是动态的,并通过可观察流触发,那么这是一个可能的用例。否则就用subscribe和filter聚合数据?