Проблема переноса кода из Angular 5 в Angular 7 - PullRequest
0 голосов
/ 30 ноября 2018

Я пытаюсь перенести некоторый код из Angular 5 в Angular 7. Я попробовал официальное руководство по обновлению, но не все было перенесено.Так что я попробовал это вручную, но я не могу заставить его работать.

Это код Angular 5

getNodes(): Observable < Node[] > {
   return Observable.create(obs => {
     ros.getNodes(data => {
      obs.next(data);
      obs.complete();
     });
   }).flatMap(data => {
     return Observable.forkJoin(data.map(name => Observable.create(obs => {
       const detailClient = new ROSLIB.Service({
         ros: ros,
         name: '/rosapi/node_details',
         serviceType: 'rosapi/NodeDetails'
       });
       const request = new ROSLIB.ServiceRequest({ node: name });
       detailClient.callService(request, data2 => {
         obs.next({ name, subscribing: data2.subscribing });
         obs.complete();
       });
     })));
   });
 }
 loadData(): void {
   Observable.forkJoin(this.getNodes()).subscribe(([nodes]) => {
     //this.data.nodes = nodes;
     console.log(nodes);
   });
 }

И вывод console.log следующий и новый Angular 7код должен выглядеть так же

[
  {
    "name": "/mission_controller"
  },
  {
    "name": "/mavros"
  },
  {
    "name": "/pose_analyser"
  }
]

Это то, что я пытался, но выдает ошибку «Свойство pipe» не существует для типа «{}» »

getNodes(): Observable<Node[]> {
  return Observable.create(obs => {
    ros.getNodes(data => {
      obs.next(data);
      obs.complete();
    });
  }).pipe(mergeMap( data => {
    return forkJoin(data.pipe(map(name => Observable.create(obs => {
      const detailClient = new ROSLIB.Service({
        ros: ros,
        name: '/rosapi/node_details',
        serviceType: 'rosapi/NodeDetails'
      });
      const request = new ROSLIB.ServiceRequest({ node: name });
      detailClient.callService(request, data2 => {
        obs.next({ name });
        obs.complete();
      });
    }))));
  }));
}
loadNodes(): void {
  forkJoin(this.getNodes()).subscribe(([nodes]) => {
    console.log(nodes);      
  });
}

Я надеюсь, что кто-нибудь может мне помочь

С уважением

newsub7

...