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 接受两个参数,action
和 data
,但是在你调用方法的地方,你没有传递任何参数...
你在 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