在我的服务中,我创建了一个我将在另一个组件中使用的observable
const rev = (list, reversed) => {
if (list.length == 0) return reversed
reversed.unshift(list[0])
return rev(list.slice(1), reversed)
}
const reverse = (list) => rev(list, [])
然后在我的组件中,我订阅了observable。
import { Injectable } from '@angular/core';
import { Subject } from 'rxjs/Subject';
import { Router } from '@angular/router';
import { HttpClient, HttpErrorResponse } from '@angular/common/http';
@Injectable()
export class ApiHandlerService {
modalObject = new Subject<any>();
constructor(
private router: Router,
private http: HttpClient,
) {}
responseHandler(response) {
if (response.success) {
const obj = {
exception: false,
payload: response.payload
};
this.modalObject.next(obj);
return obj;
} else {
const obj = {
exception: true,
message: response.exception.message,
segNum: response.exception.seqNum
};
this.modalObject.next(obj);
return obj;
}
}
errorHandler(err) {
if (err instanceof HttpErrorResponse) {
if (err.status === 401) {
this.router.navigate(['/app-login']);
}
}
}
}
所以你可以看到,当我订阅时,我只是在这一点上尝试console.log订阅值。这似乎不起作用,我对可观察到的东西有点太新,无法弄清楚出了什么问题?
答案 0 :(得分:0)
通常,此代码有效
ngOnInit() {
this.allSpecies = this.birdService.getAllSpeciesFromFirebase();
this.specieSub = this.allSpecies.subscribe(data => console.log(data));
}
这里,“allSpecies”是一个可观察的,specieSub是一个订阅。数据将根据服务返回的方式记录为数组或包装对象。
由于Subject是Observable的超类,它应该也可以工作..无论如何尝试降级到Observable本身并查看所有代码是否正常工作......
发布任何更新或生成的日志
答案 1 :(得分:0)
可能导致此情况的一些原因:
1。您必须在提供者中添加服务
@Component({
selector: 'app-api-handler-modal',
templateUrl: './api-handler-modal.component.html',
providers:[ApiHandlerService]
})
当您订阅时,应根据您的情况进行service.methodInService()。subscribe()
this.apiHandlerService.responseHandler()。subscribe(obj => console.log(obj)); }
构造函数(公共 apiHandlerService:ApiHandlerService)