在向Observable添加属性时,为什么会出现TypeError

时间:2018-02-12 20:20:37

标签: javascript angular typescript observable

我正在尝试在订阅并在Angular 4应用程序中分配响应后在Observable上添加属性。

getCourses() {
  return this.coursesService.getCourses().subscribe(
    res => {
      this.courses = res;
      for (const course of this.courses) {
        course.isChecked = false;
      }
    }
  );
}

代码在Observable上工作并创建属性,但我也得到了以下错误。

ERROR TypeError: Cannot create property 'isChecked' on boolean 'false' at SafeSubscriber._next at SafeSubscriber.webpackJsonp.../../../../rxjs/Subscriber.js.SafeSubscriber.__tryOrUnsub

如何更正代码,以免出错?

解决!!!

所以我没有意识到在api返回的对象数组的末尾是错误的。

[{“PersonID”:“129”,“FirstName”:“Ash”,“MiddleName”:“E。”,“LastName”:“Green”,“MemberID”:“129346”,“MemberNumber”: “105”,“MemberStatus”:2,“AffiliatedAgencyID”:“160”},{“PersonID”:“221334”,“FirstName”:“Abs”,“MiddleName”:null,“LastName”:“Plast”, “MemberID”:“1953”,“MemberNumber”:“2047”,“MemberStatus”:1,“AffiliatedAgencyID”:“13”},false]

一旦我创建了一个if语句来解释最后的错误,我的问题就解决了。我得到的另一个对象没有这个异常。所以它没有发生。

2 个答案:

答案 0 :(得分:2)

如果var {google} = require('googleapis'); var pagespeed = google.pagespeedonline('v2'); pagespeed.pagespeedapi.runpagespeed({ 'url': 'https://www.google.com/' }).then(function(res) { console.log(res); }, function(err) { console.log(err); }); 是一个数组,那么您应该可以毫无问题地使用它。但请确保res是一个数组。

res

答案 1 :(得分:0)

所以我没有意识到在api返回的对象数组的末尾是错误的。

[{“PersonID”:“129”,“FirstName”:“Ash”,“MiddleName”:“E。”,“LastName”:“Green”,“MemberID”:“129346”,“MemberNumber”: “105”,“MemberStatus”:2,“AffiliatedAgencyID”:“160”},{“PersonID”:“221334”,“FirstName”:“Abs”,“MiddleName”:null,“LastName”:“Plast”, “MemberID”:“1953”,“MemberNumber”:“2047”,“MemberStatus”:1,“AffiliatedAgencyID”:“13”},false]

一旦我创建了一个if语句来解释最后的错误,我的问题就解决了。我得到的另一个对象没有这个异常。所以它没有发生。