Я пытаюсь перенести некоторый код из 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