Когда вы используете pipe
для наблюдаемого объекта, вы всегда получаете новый наблюдаемый объект, а не массив. Вы можете получить доступ к Product[]
и сопоставить его с (Observable<Product>)[]
без каких-либо проблем, но результат все равно будет заключен в другой наблюдаемый объект:
import { of } from 'rxjs';
import { map } from 'rxjs/operators';
interface Product {
id: number;
}
const products: Observable<Product[]> = of([
{ id: 1 },
{ id: 2 },
{ id: 3 },
]);
products
.pipe(map(ps => ps.map((p) => of(p))))
.subscribe((observables: Observable<Product>[]) => {
// In here you can access the array of observables:
console.log(observables);
})
Вместо подписки на наблюдаемое вы также можете tap
в pipe
, чтобы получить доступ к результату map()
, но результат по-прежнему будет доступен только из наблюдаемого контекста:
// ...
import { map, tap } from 'rxjs/operators';
// ...
const x = products
.pipe(
map(ps => ps.map((p) => of(p))),
tap((observables: Observable<Product>[]) => {
// In here you can also access the array of observables:
console.log(observables);
}),
);
Но x
все еще наблюдается:
const x: Observable<Observable<Product>[]>
или, что то же самое, но может быть немного более понятным:
const x: Observable<Array<Observable<Product>>>
person
JJWesterkamp
schedule
27.06.2020
*ngFor
иasync
. Это не невозможно достичь сObservable<etntity[]>
. Может быть, ваш вопрос должен быть об этом - person ShamPooSham   schedule 28.06.2020