Angular 2 TypeScript 错误:无法解析 ProductsService 的所有参数

Posted

技术标签:

【中文标题】Angular 2 TypeScript 错误:无法解析 ProductsService 的所有参数【英文标题】:Angular 2 TypeScript Error: Can't resolve all parameters for ProductsService 【发布时间】:2017-06-17 10:26:30 【问题描述】:

我收到以下信息:“错误:无法解析 ProductsService 的所有参数”。

参考:http://www.telerik.com/kendo-angular-ui/components/dropdowns/dropdownlist/#toc-data-binding

product.model.ts

export class Product 
constructor(
    public ProductID?: number,
    public ProductName?: string,
    public UnitPrice?: number,
    public UnitsInStock?: number,
    public Discontinued?: boolean
)   

products.service.ts

import  Injectable  from '@angular/core';
import  Jsonp, JsonpModule  from '@angular/http';
import  Product  from './product.model';
import  Observable  from 'rxjs/Rx';

@Injectable()

// See: http://www.telerik.com/kendo-angular-ui/components/dropdowns/dropdownlist/#toc-data-binding

export class ProductsService 
    constructor( private jsonp: Jsonp)  

    fetchData(action: string = "", data?: Product): Observable<Product[]>
        console.log("BGW Action: " + action);
        console.log("BGW this.serializeModels(data) = " + this.serializeModels(data));
        return this.jsonp.get(`http://demos.telerik.com/kendo-ui/service/Products/$action?callback=JSONP_CALLBACK$this.serializeModels(data)`).map(response => response.json())
    

    private serializeModels(data?: Product): string 
        return data ? `&models=$JSON.stringify([data])` : '';
    

app.component.ts

包含:

import  ProductsService  from './products.service';
import  Product  from './product.model';
import  Inject  from '@angular/core';

还有:

providers: [ProductsService],

还有:

public productsData: Array<Product> = [];
// public listItems: Array<string> = [];

还有:

//constructor (@Inject(ProductsService) private productService: ProductsService)  
constructor (private productService: ProductsService)  

ngOnInit() 
  this.productService.fetchData().subscribe(
    (data) => this.productsData = data
  )

非常感谢任何想法。

问候,

【问题讨论】:

你的 fetchData 接受两个参数,actiondata,但是在你调用方法的地方,你没有传递任何参数... 你在 app.module 中注册了JsonpModule 吗? 【参考方案1】:

为了解决这个问题,我在 app.component.ts 中进行了更改:

constructor (private productsService: ProductsService)  

constructor (@Inject(ProductsService) private productsService: ProductsService)  

product.service.ts 中,更改:

constructor( private jsonp: Jsonp)  

到:

constructor(@Inject(Jsonp) private jsonp: Jsonp)  

【讨论】:

谢谢!在constructor 中使用@Inject(...) 解决了无法将anything 注入HttpInterceptor 的错误 原来我的export class AuthService extends HttpInterceptor // ... code 上缺少@Injectable() 装饰器,正如***.com/questions/39847356/… 上解决的那样

以上是关于Angular 2 TypeScript 错误:无法解析 ProductsService 的所有参数的主要内容,如果未能解决你的问题,请参考以下文章

Angular 8 Native Typescript 无崩溃,访问器简写

Angular 和 Typescript:找不到名称 - 错误:找不到名称

Angular 2 应用程序的 TFS 构建失败(TypeScript 错误),但一切都在本地构建良好

Angular 6 Docker Build - Angular 编译器中的错误需要 TypeScript >=2.7.2 和 <2.8.0,但找到的是 2.8.3

运行离子服务时出错:[ng] 错误:Angular 编译器需要 TypeScript >=4.4.2 和 <4.5.0,但找到了 4.5.2

Angular 2 中的 const 和 Typescript