angular2打字稿不能分配给this.object属性

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()调用放在那里突然让我的代码开始工作。

+1

才能添加'的console.log(对象)的结果;'这里?如果它是'[Object object]',请尝试'console.log(JSON.stringify(object))'并添加到您的问题中? –

+1

如果您在.html中遇到错误,请尝试实例化书籍:Book = new Book(...) – Habeeb

+0

我认为我们需要更多信息,错误,console.logs等... – Amit

大多数情况下,您的服务应该返回一个对象或对象数组的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); 
    } 
} 
+0

此答案帮助已满? – Aravind

+0

我可以再使用一点帮助。我实际上想缓存一个服务属性中的书籍数组,以便在几个组件之间共享,并且我无法弄清楚如何调整语法。那么我只想调用它来填充数组,只有当它还没有被填充时。那有意义吗? –

+0

我部分理解。但是需要更多的信息让我在fb @ aravind2109 – Aravind