У меня есть служба, которая указана только в качестве поставщика в моем модуле appModule. Это не в списке поставщиков в другом месте моего приложения. Любое свойство, которое я устанавливаю внутри моей службы, всегда не определено, когда я перемещаюсь от компонента, где он используется, и возвращайтесь. Вот моя служба ...Угловые 2: Singleton Services - Свойства не запоминаются?
LookupsService.ts
import {Injectable, OnInit} from '@angular/core';
import {Observable} from 'rxjs/Observable';
import {Http, Response} from "@angular/http";
import {environment} from "../environments/environment";
import {Lookups} from "./lookups.model";
@Injectable()
export class LookupService {
private baseUrl: string;
private lookups: Lookups;
constructor(private http: Http) {
this.baseUrl = `${environment.epiApiUrl}/lookups`;
}
getAll(): Observable<Lookups> {
// we should only hit the database to get all the lookups once
if (this.lookups) { // <-- this.lookups is ALWAYS undefined
return Observable.of(this.lookups);
}
else {
return this.http.get(`${this.baseUrl}`)
.map(this.extractData);
}
}
extractData(response: Response) {
let responseBody = response.json();
this.lookups = <Lookups>responseBody.data; // <--why isn't this remembered?
return this.lookups;
}
}
Я использую эту услугу в одном компоненте только в настоящее время ...
@Component({
selector: 'addresses',
templateUrl: './addresses.component.html',
styleUrls: ['./addresses.component.less']
})
export class AddressesComponent implements OnInit {
@Input() user;
addressTypes: IdValue[] = [];
constructor(private lookupService: LookupService) { }
ngOnInit() {
this.lookupService.getAll()
.subscribe((lookups) => {
this.addressTypes = lookups.addressTypes;
});
}
}
Всякий раз, когда я меняю на другой маршрут и вернитесь, служба должна запрашивать запросы от api каждый раз, потому что this.lookups всегда не определено. Конструктор LookupsService НЕ вызывается снова, но свойство lookups всегда не определено.
Спасибо, это было именно оно. Я знал, что это должно быть что-то глупое, которого я пропустил. Я полностью потерял свою привязанность. –