Я пытаюсь обмениваться данными между одноуровневыми компонентами (представленный ниже компонент находится в цикле for, в представлении).
Я настроил службу, чтобы я мог хранить переменную,что эти родственные компоненты могут получить доступ.Проблема в том, что, когда я пытаюсь получить доступ к значению из сервиса, через метод компонента, оно возвращается как неопределенное.Я могу передать число в службу и обновить его, но когда я пытаюсь получить его, я не могу этого сделать.
Интересно то, что если вы консоль записываете значение службы в конструкторе, оно будетполучить что-то.
Кто-нибудь может помочь с этим?Я пытался следовать главе службы Макса как можно лучше, но, похоже, ничего не получаю.
Служба
export class ProjectTaskDataService {
currentTaskId = 0;
logTaskSelectionChange(selected_task_id: number) {
this.currentTaskId = selected_task_id;
}
public getSelectedTaskId() {
return this.currentTaskId;
}
}
Компонент
import { Component, OnInit, Input } from '@angular/core';
import {ProjectTaskDataService} from '../../../../services/project-task-data.service';
@Component({
selector: '[app-section-tasks]',
templateUrl: './section-tasks.component.html',
styleUrls: ['./section-tasks.component.css'],
providers: [ProjectTaskDataService]
})
export class SectionTasksComponent implements OnInit {
@Input() taskItemData: {id: number, name: string, date: string, type: string, status: string}
taskId: number;
taskName: string;
taskDate: string;
taskType: string;
taskStatus: string;
taskSelected = false;
// This is the value that stores the ID for the current selected task for the section...
sectionSelectedTaskId: number;
constructor(private projectTaskDataService: ProjectTaskDataService) { }
ngOnInit() {
// console.log(this.taskItemData);
this.taskId = this.taskItemData.id;
this.taskName = this.taskItemData.name;
this.taskDate = this.taskItemData.date;
this.taskType = this.taskItemData.type;
this.taskStatus = this.taskItemData.status;
// Returns 0, if called here
console.log(this.projectTaskDataService.currentTaskId);
}
selectTask(id: number) {
// This will return 'undefined'
console.log('Distraction ', this.projectTaskDataService.getSelectedTaskId());
this.projectTaskDataService.logTaskSelectionChange(id);
this.sectionSelectedTaskId = this.projectTaskDataService.currentTaskId;
}