На предыдущей странице компонентов, которую я сделал, когда вы нажимаете кнопку, вы переходите к другому компоненту с помощью навигации. Учитывая, что мне пришлось написать два параметра, один для текущего пути, а второй для следующего, когда я пытаюсь подписаться на него, он дает мне объект с двумя элементами.
onSelect(subCategory) {
this.router.navigateByUrl(
`web-shop/categories/${this.type}/${subCategory.nextType}`
);}
В ngOnInit я поймал этот объект, превратил его в массив и передал его значение другой переменной. Затем я взял второй элемент массива. Когда я вызвал метод внутри this.products
, как показано ниже в коде, и отфильтровал его, а затем зарегистрировал его, я ничего не получил в console.log, даже несмотря на то, что я передаю фактическое значение, которое мне нужно, и я проверил, есть ли значение это то, что мне нужно. Но по какой-то причине я ничего не получаю для console.log
для this.products
, даже массив или значение.
import { Component, OnInit } from "@angular/core";
import { Router, ActivatedRoute } from "@angular/router";
import { Subscription } from "rxjs";
import { SingleProductModel } from "./../../Models/webshopModels/single-product.model";
import { SingleProductService } from "./../../Services/webshopServices/single-product.service";
@Component({
selector: "app-products",
templateUrl: "./products.component.html",
styleUrls: ["./products.component.scss"],
})
export class ProductsComponent implements OnInit {
type: string;
products: SingleProductModel[];
s: string;
type1: Array<any>;
constructor(
private productsService: SingleProductService,
private route: ActivatedRoute,
private router: Router
) {}
ngOnInit() {
this.route.params.subscribe((data) => {
this.type1 = Object.values(data);
console.log(this.type1);
this.type = this.type1[1];
console.log(this.type);
this.products = this.productsService
.getCategoryProducts()
.filter((a) => (a.type = this.type));
console.log(this.products);
});
}
}
И даже пробовал фильтровать внутри самого сервиса. Не в том примере, который я отправил.
getCategoryProducts() {
return this.product.slice();
}
products: SingleProductModel[] = []
type1: Array<any> = []
Как массив нужно инициализировать. - person Belle Zaid   schedule 22.02.2021Object.keys(data)
или(<any>Object).values(data)
, как указано в ответе здесь, вы можете посмотреть обсуждение использованияObject.values(data)
вTS
- person Belle Zaid   schedule 22.02.2021