У меня есть 2 компонента с именами list
и home
, я буду отображать некоторые объекты массива с именем contacts
в list
компоненте, как показано ниже.
<div *ngFor="let contact of contacts">
<mat-card (click)="onClick(contact)" >
<h4>{{contact.contactName}}</h4>
<p>{{contact.email}}</p>
</mat-card>
</div>
Когда я нажимаю наконкретный объект (я, контакт).Я установлю нажатой object
, используя set()
метод.
import { Component, OnInit } from '@angular/core';
import { ContactService } from '../contacts.service';
import { Router } from '@angular/router';
import { DataService} from '../data.service';
@Component({
selector: 'app-list',
templateUrl: './list.component.html',
styleUrls: ['./list.component.css']
})
export class ListComponent implements OnInit {
contacts = [];
constructor(private myService: ContactService,
private router : Router,
private dataService: DataService,
) {}
ngOnInit() {
this.myService.getContacts()
.subscribe((res :[]) => this.contacts = res);
}
onClick(contact) {
this.dataService.setSelectedContact(contact);
this.router.navigate(['/home']);
}
}
Затем я направлю компонент home
, и я получу доступ к объекту, на который нажали, используя get()
метод, подобный этому:
import { Component, OnInit } from '@angular/core';
import { DataService} from '../data.service'
@Component({
selector: 'app-home',
templateUrl: './home.component.html',
styleUrls: ['./home.component.css']
})
export class HomeComponent implements OnInit {
contact: any;
constructor(private dataService: DataService) { }
ngOnInit() {
this.contact = this.dataService.getSelectedContact();
console.log(this.contact);
}
}
service
file
import { Injectable } from '@angular/core';
@Injectable()
export class DataService {
selectedContact;
constructor() { }
public setSelectedContact(data) {
this.selectedContact = data;
}
public getSelectedContact() : any {
return this.selectedContact;
}
}
При первом маршруте я могу отобразить нажатой object
, но если я обновляю страницу, я не могу отобразитьobject
, объект станет undefined
, как я могу отобразить объект даже после обновления страницы (дома)?
DEMO