导入的服务未定义

时间:2017-12-21 12:14:38

标签: angular

cartService始终记录未定义。我不确定它是否与抽象类有关,因为我之前从未使用它并且不知道它做了什么(我正在更新原本不是由我编写的代码)。使用常规类并不能解决问题......

产品utils.ts

import { CartService } from '../services/cart.service';
import { Store } from '@ngrx/store';

...

export abstract class ProductUtils {
  constructor(
    private cartService: CartService,
    protected store: Store<any>) {}

  addToCart() {
    this.cartService.addCartFinalProduct(foo); // ERROR TypeError: Cannot read property 'addCartFinalProduct' of undefined
    ...
  }
}

由于某种原因,商店与cartService不同。

我正在使用Angular 5.

cart.service.ts

import { Injectable } from '@angular/core';

@Injectable()

export class CartService {
  addCartFinalProduct() {
    ...
  }
}

2 个答案:

答案 0 :(得分:1)

您在构造函数中实例化了cartService,这是正确的,您说明cartService属于CartService类型,您没有给它一个值。这就是console.log(this.cartService)记录为undefined的原因。

您需要从cartService中的方法和响应的console.log()返回一些内容。

实施例

console.log(this.carService.SomeMethodWithAReturn());

与创建类似public variable: string;然后console.log(this.variable)之类的变量相同,这也将返回undefined,直到为其分配值,如public variable: string = 'random string';,如果你console.log(variable)现在,您将看到&#34;随机字符串&#34;在控制台中。

答案 1 :(得分:0)

您需要使用 this

 constructor(
    private cartService: CartService,
    protected store: Store<any>) {
       console.log(this.cartService);
}