私の Home コンポーネントは routerLink をクリックしない限り読み込まれませんが、アプリケーションの起動時に読み込まれるはずです。
コンポーネントの横にネストされ、ホーム コンポーネントのロード時にフィード データを取得するプロパティがあります。
export class HomeComponent implements OnInit, OnDestroy {
public subscription: Subscription;
constructor(public router: Router, public userService:UserSettingsService, public safetyService: SafetyService) {
var self = this;
// Is called and data is loaded.
self.loadDataForSafety(userService.defaultFilterObject);
this.subscription = this.userService.filterObjectAnnounced$.subscribe(
filtered => {
self.selectedFilters = filtered;
self.loadDataForSafety(self.selectedFilters);
}
);
}
}
ngOnInit() {
var self = this;
this.subscription = this.userService.filterObjectAnnounced$.subscribe(
filtered => {
self.selectedFilters = filtered;
self.loadDataForSafety(self.selectedFilters);
}
);
}
loadDataForSafety(filterObj) {
var filterObj = filterObj;
var self = this;
var lowestDataLevel = 'RegionNum';
this.components.forEach(function(cardElem){
if(cardElem.id == "safetyWidget"){
self.safetyService.getAllSafetyElements(filterObj)
.map(data => {
// Itterate through array of objects returned
Object.keys(cardElem.cardData).forEach(card => {
var keyID = '';
if(card == '3'){
keyID = 'SBOWT';
}else if(card == '2'){
keyID = 'RWT';
}else if(card == '4'){
keyID = 'BHOIT';
}else if(card == '0'){
keyID = 'Backing';
}
data.forEach(elem =>{
cardElem.cardData[card].push({
"text": elem[lowestDataLevel],
"id": elem[lowestDataLevel],
"value": elem[keyID],
"percent": (Math.random() * (99 - 20) + 20) + "%"
});
})
})
// DATA IS PRESENT
return cardElem.cardData;
})
.subscribe(data => {
// DATA IS PRESENT HERE
cardElem["cardData"] = data;
})
}
})
}
コンストラクターは開始されますが、コンポーネントがレンダリングされないため、ngOnInit が開始されることはありません。
ログに記録されるエラーもありません。