Angular 4 - BehaviourSubject不能正确返回json数据

时间:2017-12-07 21:59:12

标签: json angular

我正在尝试使用BehaviorSubject在角度应用中创建全局服务。

我在这个服务中创建了一个方法,我已经定义了一个HTTP get方法并加载了JSON文件。

现在我遇到的问题是当我在任何组件中将此BehaviourSubject订阅为asObservable并将结果分配给typescript文件中的特定变量时,HTML模板会呈现此值正确地通过结构化指令*ngFor,但当我试图在打字稿文件中获得相同的值时,它不起作用。

例如;

当我尝试打印此值时

console.log(this.data.boxes.length);

然后它给了我一个错误

  

[错误类型错误:无法读取未定义的属性'长度'

当我试图打印这个没有长度的值时

console.log(this.data.boxes);

它在控制台面板中为我提供了一个正确的数组值。

现在如果我将BehaviorSubject更改为Subject,那么它的正常工作意味着我也获得了length值。

但是,我想使用BehaviorSubject代替Subject

我做错了什么,我该如何实现?

1 个答案:

答案 0 :(得分:0)

即使在订阅之前没有调用下一个主题,行为主题也会向订阅者发送当前值,换句话说:

您的订阅在第一次" next"之前订阅了主题。值。我假设行为主题的初始值未定义或类似,因此发送给订阅者的第一个值导致错误。 你能否检查一下主题的声明,并确保初始值的形式正确,如:

public exampleSubject = new BeahviourSubject<yourType[]>(<yourType[]>[]);