Попытка передать данные между компонентом с помощью сервиса - PullRequest
0 голосов
/ 27 сентября 2019

Я использую сервис для передачи данных между компонентом и моим компонентом, как показано ниже

  constructor(private psService: ProjectShipmentService, private pdComp: ProjectDetailsComponent) {

  }
  ngOnInit() {
    this.psService.getTDate().subscribe(x => this.cachedResults = x);
    this.populateArrays();

, где мой сервис похож на

 constructor(private service: DataService, private pInfo: ProjectDetailsComponent) {

    this.rProjectNumber = this.pInfo.rProjectNumber;
    this.rProjectSO = this.pInfo.rSalesOrder;
    this.entityUrl = this.pInfo.entityUrl;
    this.tDate = service.get<ShipDateFilterModel[]>(this.entityUrl);
   }

Несмотря на то, что tDate имеет данные при подпискеу него в Компоненте нет данных.this.cachedResults пусто, когда служба вызывается в ловушке жизненного цикла ngOnInIt.Что мне здесь не хватает?

Ответы [ 2 ]

1 голос
/ 27 сентября 2019

Попробуйте так ...

export class ProjectShipmentService {
  rProjectNumber;
  tDate: Observable<ShipDateFilterModel[]>;
  entityUrl;
  rProjectSO;

  constructor(private service: DataService, private pInfo: ProjectDetailsComponent) {
    this.rProjectNumber = this.pInfo.rProjectNumber;
    this.rProjectSO = this.pInfo.rSalesOrder;
    this.entityUrl = this.pInfo.entityUrl;
   }

getTDate(){
    return this.service.get<ShipDateFilterModel[]>(this.entityUrl);
}

И в вашем компоненте.

  ngOnInit() {
    this.psService.getTDate.subscribe(x => this.cachedResults = x);
    this.populateArrays();
  }

Надеюсь, это поможет:)

1 голос
/ 27 сентября 2019

Почему бы вам просто не создать метод в сервисе, такой как

getTDate(){
return this.service.get<ShipDateFilterModel[]>(this.entityUrl);
}

И подписаться на свой компонент

this.psService.getTDate().subscribe(x => this.cachedResults = x);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...