Итак, я новичок в angular ... Этот код здесь:
ngOnInit(): void {
this.getProduct();
}
getProduct(): void {
const id = +this.route.snapshot.paramMap.get('id');
this.product = this.products.getProduct(id);
console.log(this.product);
}
Итак, когда эта вещь открывается в первый раз, я получаю "TypeError: Cannot read property 'sr c' of undefined «И этот console.log показывает« undefined », но когда я нажимаю кнопку« Домой »в приложении, а затем нажимаю то же самое, он работает правильно ... Регистрирует нужный элемент и отображает правильное изображение
public getProduct(id: number): Product {
// console.log('returning product');
return (this.products.find(product => product.id === id));
}
модуль, который возвращает список продуктов, которые ранее были загружены из файла. json
constructor( private http: HttpClient ) {
this.getJSON().subscribe(data => {
this.products = data.products;
});
}
Этот модуль используется для создания сетки продуктов, чтобы избежать загрузки. json дважды I просто импортировал его и использовал повторно.
Итак, если кто-нибудь может объяснить, почему он не работает в первый раз после загрузки страницы (конечно, с помощью ng serve) и почему он работает каждый раз после этого, я ' d действительно люблю тебя.
Редактировать, вот шаблон и весь component.ts согласно запросу:
<div>
<img src="{{product.src}}" alt="">
</div>
import { Component, OnInit } from '@angular/core';
import { ActivatedRoute } from '@angular/router';
import { Location } from '@angular/common';
import { Product } from '../classes/product.interface';
import { ShoppingGridComponent } from '../shopping-grid/shopping-grid.component';
@Component({
selector: 'app-product',
templateUrl: './product.component.html',
styleUrls: ['./product.component.css']
})
export class ProductComponent implements OnInit {
product: Product;
constructor(
private route: ActivatedRoute,
private location: Location,
private products: ShoppingGridComponent
) {}
ngOnInit(): void {
this.getProduct();
}
getProduct(): void {
const id = +this.route.snapshot.paramMap.get('id');
console.log(id);
this.product = this.products.getProduct(id);
console.log(this.product);
}
}