Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 如何从服务中动态调用主题?_Angular_Typescript_Rxjs - Fatal编程技术网

Angular 如何从服务中动态调用主题?

Angular 如何从服务中动态调用主题?,angular,typescript,rxjs,Angular,Typescript,Rxjs,具有以下主题的服务 subjectOne$ = new Subject<Partial<boolean>>(); subjectTwo$ = new Subject<Partial<boolean>>(); subjectThree$ = new Subject<Partial<boolean>>(); subjectFour$ = new Subject<Partial<boolean>&

具有以下主题的服务

  subjectOne$ = new Subject<Partial<boolean>>();
  subjectTwo$ = new Subject<Partial<boolean>>();
  subjectThree$ = new Subject<Partial<boolean>>();
  subjectFour$ = new Subject<Partial<boolean>>();

我可以在next()中执行参数,但如何动态调用subjectXXXX$呢?

我不理解这个问题,但我认为我们可以使用对象作为主题

subjects = {
  1: new Subject<Partial<boolean>>(),
  2: new Subject<Partial<boolean>>(),
  ....
}

onToggle(number: string) {
    this.myService.subjects[number].next(/* whatever value */);
  }
主题={
1:新主题(),
2:新主题(),
....
}
onToggle(编号:字符串){
this.myService.subjects[number].next(/*任意值*/);
}

您可以尝试在地图中管理主题并动态访问它们

subjectMaps: {[key: string]: Subject<Partial<boolean>>} = {
    one : new Subject<Partial<boolean>>();
    two : new Subject<Partial<boolean>>();
    three: new Subject<Partial<boolean>>();
    four : new Subject<Partial<boolean>>();
  }
subjectMaps: {[key: string]: Subject<Partial<boolean>>} = {
    one : new Subject<Partial<boolean>>();
    two : new Subject<Partial<boolean>>();
    three: new Subject<Partial<boolean>>();
    four : new Subject<Partial<boolean>>();
  }
subjectByKey(subjectKey: string): Subject<Partial<boolean>> {
    return this.subjectMaps[subjectKey];
  }
onToggle(number: string) {
    this.myService.subjectByKey('one').next(this.selected[number]);
  }