angular2打字稿不能分配给this.object属性
问题描述:
我正在尝试angular2和打字稿中的项目,并且我遇到了一些莫名其妙的问题。出于某种原因,我无法将数据分配给类属性。angular2打字稿不能分配给this.object属性
我有一双这样定义类的属性:
public loadResultMessages: string[];
public book: Book;
我有一个方法,其中我打电话这样的服务:
getBookByCode() {
this.http.get('/api/book/loadbycode?code=' + this.bookCode)
.subscribe(result => {
var object = result.json();
console.log(object);
this.loadResultMessages = object.loadResultMessages;
this.book = object.book;
});
}
我核实,我得到数据返回到对象中,但即使尝试将数据分配给这两个属性后,它们也会说未定义。怎么可能?
编辑:好吧,我搞乱了Visual Studio 2017并在我的JavaScript中设置断点。我对变量进行了调整,它告诉我他们没有定义。但是,当我将它们注销到控制台时,它们将被填充。其他变量我可以鼠标悬停,并显示结果。我不确定这是否是某种时间问题或VS中的错误?
我想我也遭受了一些重大的缓存问题。只是将额外的console.log()调用放在那里突然让我的代码开始工作。
答
大多数情况下,您的服务应该返回一个对象或对象数组的Observable。
getBookByCode(bookCode) : Observable<any[]> {
return this.http.get('/api/book/loadbycode?code=' + bookCode)
.map((response: Response) => <any[]>response.json())
.do(data => console.log("data we got is " + JSON.stringify(data)))
.catch(this.handleError);
});
}
在你的组件,你应该订阅它在你的构造函数
constructor(private serviceObject:ServiceName){
this.serviceObject.getBookByCode(this.bookCode)
.subscribe(results => this.results = results,
error =>console.log(error);
}
}
才能添加'的console.log(对象)的结果;'这里?如果它是'[Object object]',请尝试'console.log(JSON.stringify(object))'并添加到您的问题中? –
如果您在.html中遇到错误,请尝试实例化书籍:Book = new Book(...) – Habeeb
我认为我们需要更多信息,错误,console.logs等... – Amit