这不是第一次发生。我通过http:
调用一个帖子resquestthis.http.post('url', this.simpleFilter)
.map((response: Response) => response.json())
.subscribe(data => {
if (data.data) {
this.simpleFilter = data.data;
console.log(this.simpleFilter.type);
console.log(this.simpleFilter);
this.emissorFilter.next(this.simpleFilter);
} else {
swal(data.error, data.message, 'error');
}
},
error => swal(data.error, data.message, 'error'));
我在console.log(this.simpleFilter.type)打印的类型是
1
但是当console.log(this.simpleFilter);打印对象的类型是
0
另一次发生
P.S。类型对象是枚举。
为什么会这样?
答案 0 :(得分:0)
如果您还发布了预期的输出并更详细地解释了所有内容,那么这会真正改善您的问题,但我很确定我明白您的问题是什么。
这是因为当您记录属性(数字或字符串)的属性时,您将获取当前存在的值并将其输出。打印对象时,您有一个显示在开发人员工具中的链接。因此,当数据更改时,控制台中对象的属性会更新。这导致了差异。您可以尝试将console.log
语句包装在setTimeout
中并延迟,以查看输出是否不同。
答案 1 :(得分:0)
要在订阅时正确设置我的对象,我必须将其包装在另一个对象中。 例如:
// in Service
let wrappedFilter = {
type: this.simpleFilter.type,
filter: this.simpleFilter
}
this.emissorWrappedFilter.next(wrappedFilter);
在订阅中,我重播了对象:
// in Component
this.service.emissorWrappedFilter.subscription ( wf => {
this.simpleFilter = wf.filter;
this.simpleFilter.type = wf.type;
(...)
});
我不知道这是不是最好的方式,但它确实有效!