angular – HttpClient没有运行构造函数

前端之家收集整理的这篇文章主要介绍了angular – HttpClient没有运行构造函数前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用HttpClient从json端点获取一个对象.在我获取它并订阅了observable后,我发现构造函数不在模型上运行,并且对象上的公共方法都是未定义的.如何让构造函数运行并且方法可用?
  1. export class Customer {
  2.  
  3. constructor() {
  4. this.Addresses = new Array<Address>();
  5. }
  6.  
  7. public Addresses: Array<Address>;
  8.  
  9. public addAddress(address: Address) void{
  10. this.Addresses.push(address);
  11. }
  12. }
  13.  
  14. var url: string = `${this.urlBase}api/customer/${id}`;
  15. var customerObservable: Observable<Customer> = this.authHttp.get<Customer>(url);
  16.  
  17. customerObservable.subscribe(customer => {
  18. // Addresses is undefined!
  19. customer.Addresses.push(new Address());
  20. // addAddress is undefined!
  21. customer.addAddress(new Address());
  22. });
从.get返回的数据是Customer类的形状(假设您具有未显示属性).但实际上并不是您的Customer类的实例.

这就是您无法访问任何Customer类方法的原因.

您必须使用new关键字创建Customer实例,然后将get中的数据复制到其中.

像这样的东西:

  1. let customerInstance = Object.assign(new Customer(),customer);

然后,您将创建一个新的客户实例,您的构造函数将执行.

猜你在找的Angularjs相关文章