从角度解析服务到组件的数据

时间:2019-04-16 12:51:59

标签: javascript angular

在我的服务中,我拨打电话:

    this.potentialOrganizations(currentNode.id)
      .subscribe(data => {
        console.log('consoling the org data!!!!!!!  '  + JSON.stringify(data))
        this.potentialOrgData = [];
        this.potentialOrgData = data;
        this._potentialOrgs.onNext(true);
      })

数据控制台很好,正如您所看到的,我尝试使用可观察的方法,但是由于某些原因它无法正常工作!

我可能需要一种新的方式来调用数据,正如我在组件html中所说的那样:尽管它不起作用:

<ul *ngIf="this.engagementService.potentialOrgData.length > 0">
  <li *ngFor="let org of this.engagementService.potentialOrgData">
     <p class="listedOrgs">{{ org.name }}</p>
  </li>
 </ul>

在我的组件中,我有这个:

  ngOnInit(): void {
this.engagementService.potentialOrgs$.subscribe(
  (data) => {
    if (data) {
      console.log('are we hitting here inside the potentialORG DATA!??!?!?!!?!?')
      this.potentialOrganizations = this.engagementService.potentialOrgData;
    }
  }
)
this.potentialOrganizations = this.engagementService.potentialOrgData;
  }

它没有控制台,即使在我的服务中我设置了可观察的内容:

  private _potentialOrgs = new BehaviorSubject<boolean>(false);
  public potentialOrgs$ = this._potentialOrgs.asObservable();

我在想也许我需要改用@input吗?但是如何正确地做到这一点?

1 个答案:

答案 0 :(得分:1)

您可以通过尝试以下操作使此操作更加简单。如果potentialOrgData是从服务中的订阅中设置的,则它将保持最新状态,因为订阅保持打开状态。您将可以直接在服务中使用该变量。

public requestedData = [];

public ngOnInit(): void {
    this.requestedData = this.engagementService.potentialOrgData;
}

在您的模板中。

<ul *ngIf="requestedData.length">
  <li *ngFor="let org of requestedData">
    <p class="listedOrgs">{{ org.name }}</p>
  </li>
</ul>

行为主题和可观察对象非常强大,但并非总是必需的。