我正在处理文件上传服务的前端。我目前忽略了关于后端的服务路径。我遇到了一个奇怪的问题。我有一些生成的组件位于app组件中。当我从控制台结束服务并再次 ng serve 时,它会出错。它说:
我发现摆脱这种情况的唯一方法是擦除我的上传服务注入,保存文件,然后重新插入注入。这是它应该看起来的样子:
获取服务的唯一方法是删除行私人服务:UploaderService
知道为什么会这样吗?我注射了什么东西?我的UploaderService标记为Injectable(),使用它的组件在Directives下。
更新 我发现它与UploaderService无关。我有一个不注入UploaderService的组件。我修复它与修复注入UploaderService的其他组件的方式相同。通过删除构造函数的参数,保存,然后返回参数。然后它将提供
UPDATE2: 生成的组件upload.component.t有一个用它生成的spec文件, upload.component.spec.ts
我的UploadComponent构造函数中有一个参数,我注入了UploaderService。在spec.ts文件中,创建了一个新的UploadCompent,但不包含任何参数。我猜这是我出错的地方。我该如何解决这个问题?
这是我的UploaderService:
import { Injectable } from '@angular/core';
import {Http, Response, HTTP_PROVIDERS, Headers, HTTP_BINDINGS, RequestOptions} from '@angular/http';
import { Observable } from 'rxjs/Observable';
import 'rxjs/Rx';
import { ItemEntryComponent } from './item-entry';
import { Query } from './Query';
@Injectable()
export class UploaderService {
public URL: string;
private query: Query;
public filesSelected: Array<ItemEntryComponent> = [];
progress$: any;
progress: any;
progressObserver: any;
//CONSTRUCTOR
constructor(private http: Http) {
//***SET URL***
this.URL = 'http://localhost:7547/api/picker';
//Create Query for url
this.query = new Query(this.URL);
//Create progress attribute
this.progress$ = Observable.create(observer => {
this.progressObserver = observer
}).share();
}
}
答案 0 :(得分:0)
问题解决了!
我没有意识到生成的文件包含规范测试文件,在我的示例中它是 upload.component.spec.ts 。摆脱这些文件摆脱了要求在测试文件中填充参数的错误,现在ng服务工作。