Из x.component.ts
я звоню getSomething()
в y.service.ts
.Я подписываюсь на getSomething()
, потому что это возвращает наблюдаемое.Дело в том, что до .subscribe()
у меня есть объект, который имеет 4 элемента внутри, один из которых является массивом числовых массивов (число [] []), а после .subscribe
того жемассив теперь пуст.
x.component.ts
this.y
.getSomething()
.pipe(
//make an observable to pass to child component
tap(data => (this.pautaFinal$ = of(data))),
// This object is just for development purpose
tap(data => (this.pautaFinal = data)),
// This is to change the number[][] object into a number[][][]
// I need it that way
tap(
data =>
(this.escalaPorcionada = this.transformEscala(
data.escala.escalaArr,
10
))
)
)
.subscribe();
// Makes an array of number arrays, into an array of arrays of chunkSize number arrays.
transformEscala(escala: number[][] = [], chunkSize: number): number[][][] {
let results: number[][][] = [];
while (escala.length) {
results.push(escala.splice(0, chunkSize));
}
return results;
}
В этом x.component я также попробовал вместо третьего tap
a map(data => data.escala.escala)
, а затем`.subscribe (data => this.escalaPorcionada = this.transformEscala (data, 10).
y.service.ts
getSomething(): Observable<Pauta> {
let admin: DatosAdmin;
let escala: Escala;
let rubrica: Rubrica;
let criterios: Criterios;
this.datosAdminAcumul$.subscribe(datos => (admin = datos));
this.escalaAcumul$.subscribe(datos => (escala = datos));
this.rubricaAcumul$.subscribe(datos => (rubrica = datos));
this.criteriosAcumul$.subscribe(datos => (criterios = datos));
let user = JSON.parse(localStorage.getItem("user"));
// Ultimos datos que agregar a la pauta.
let extras = {
usuarioModificacion: user.id
};
const pautaFinal: Pauta = {
datosAdmin: admin,
criterios: criterios,
rubrica: rubrica,
escala: escala,
extras: extras
};
return of(pautaFinal);
}
Это функция, которую я вызываю в y.service.ts
. У нее есть некоторые наблюдаемые, которые находятся в той же службеон подписывается на них, получает некоторые значения, присваивает их чему-то другому, а затем всем этим, помещает их в объект pautaFinal
, и это то, что я возвращаю как наблюдаемый .
Что я пробовал: Я проверил отладчик chrome и до подписки массив существует, после он пустой.
Это значение escalaArr
внутри наблюдаемого this.escalaAcumul$
(от y.service) ![Before .subscribe() (escalaArr is the array that is lost)](https://i.stack.imgur.com/zMQ4a.jpg)
Это после подписки. Только одна функцияЗвонок после предыдущего изображения.![After .subscribe()](https://i.stack.imgur.com/e6pKv.jpg)
Этот объект имеет еще 4 элемента, и ни один из них не изменяется, просто escalaArr
.
Я не знаю, что я делаю здесь неправильно.Я застрял на некоторое время и благодарен за помощь, спасибо.