Для обмена данными между компонентами используйте сервис.Создайте службу Angular, которая содержит этот код:
import { Injectable } from '@angular/core';
@Injectable({
providedIn: 'root'
})
export class BuildingService {
public buildingList: any[] = [
{
id: 1,
label: 'Campus Gym!',
image: '/assets/img/gym.png',
}
..... //rest of buildings
];
}
Внедрите службу в оба компонента, которым требуется эта информация, и затем получите доступ к этим данным через службу.
export class BuildingListComponent {
get buildingList(): string {
return this.dataService.buildingList;
}
constructor(private buildingService: BuildingService ) {
}
}
У меня естьпример здесь:
https://stackblitz.com/edit/angular-simpleservice-deborahk
Затем можно передать выбранный идентификатор из одного компонента в другой в качестве параметра URL-адреса.Другой компонент также может внедрить службу и получить доступ к соответствующему зданию из списка.
export class BuildingInfoComponent implements OnInit {
currentBuilding;
constructor(private buildingService: BuildingService ) {
}
ngOnInit() {
const param = this.route.snapshot.paramMap.get('id');
if (param) {
const id = +param;
this.currentBuilding = this.buildingService.buildingList.find(item => item.id === id);
}
}
}
[ПРИМЕЧАНИЕ: ни один из этого кода не был проверен или проверен синтаксисом]