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() {
...
}
}
答案 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);
}