在我的服务中,我拨打电话:
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吗?但是如何正确地做到这一点?
答案 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>
行为主题和可观察对象非常强大,但并非总是必需的。