Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 多部分文件上传和ng服务:Angular 2_Javascript_Typescript_Angular - Fatal编程技术网

Javascript 多部分文件上传和ng服务:Angular 2

Javascript 多部分文件上传和ng服务:Angular 2,javascript,typescript,angular,Javascript,Typescript,Angular,我在一个文件上传服务的前端工作。我目前正在忽略有关后端的服务路径。我遇到了一个奇怪的问题。我在应用程序组件中有一些生成的组件。当我从控制台结束发球并再次发球时,它会出错。它说: 我发现摆脱这种情况的唯一方法是删除我的上传服务注入,保存文件,然后重新插入注入。应该是这样的: 让ng服务工作的唯一方法是删除行私有服务:UploaderService 知道为什么会这样吗?我的注射有什么遗漏吗?我的UploaderService被标记为Injectable(),使用它的组件在指令下 更新: 我发现它与

我在一个文件上传服务的前端工作。我目前正在忽略有关后端的服务路径。我遇到了一个奇怪的问题。我在应用程序组件中有一些生成的组件。当我从控制台结束发球并再次发球时,它会出错。它说:

我发现摆脱这种情况的唯一方法是删除我的上传服务注入,保存文件,然后重新插入注入。应该是这样的:

让ng服务工作的唯一方法是删除行私有服务:UploaderService

知道为什么会这样吗?我的注射有什么遗漏吗?我的UploaderService被标记为Injectable(),使用它的组件在指令下

更新: 我发现它与UploaderService无关。我有一个不注入UploaderService的组件。我修复它的方式与修复注入UploaderService的其他组件的方式相同。通过删除构造函数的参数,保存,然后放回参数。那就可以了

更新2: 生成的componenet upload.component.t有一个与之一起生成的spec文件upload.component.spec.ts

它有一个错误,要求这样的参数:

我的UploadComponent构造函数中有一个参数,我在其中注入UploaderService。在spec.ts文件中,将创建一个新的UploadCompent,但不包含任何参数。我猜这就是我错的地方。我如何解决这个问题

这是我的上传服务:

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();
  }
}
从'@angular/core'导入{Injectable};
从“@angular/Http”导入{Http,Response,Http_提供程序,头,Http_绑定,RequestOptions};
从“rxjs/Observable”导入{Observable};
进口“rxjs/Rx”;
从“./item entry”导入{ItemEntryComponent};
从“./Query”导入{Query};
@可注射()
导出类上载服务{
公共URL:string;
私有查询:查询;
已选择公共文件:数组=[];
进度美元:任何;
进展:任何;
观察员:任何;
//建造师
构造函数(专用http:http){
//***设置URL***
this.URL=http://localhost:7547/api/picker';
//创建url的查询
this.query=新查询(this.URL);
//创建进度属性
this.progress$=Observable.create(Observable=>{
this.progressObserver=观察者
}).share();
}
}
问题已解决


我没有意识到生成的文件包含一个规范测试文件,在我的示例中是upload.component.spec.ts。删除这些文件可以删除要求在测试文件中填写参数的错误,现在ng SERVER可以工作。

通过删除私有属性,它可能会工作,如果您将参数作为构造函数传递,它将如何成为私有的?@juvian我尝试了一下。我发现它与UploaderService无关。我有一个不注入UploaderService的组件。我修复它的方式与修复注入UploaderService的其他组件的方式相同。通过删除构造函数的参数,保存,然后放回参数。然后就可以了。奇怪,但很高兴你得到了fixed@juvian虽然它是固定的,但它只是暂时的。当我在一天结束后离开,明天再回来时,我将不得不删除我所有组件的构造函数中的所有参数。现在还可以,但随着项目的发展,这将成为一个更大的问题。作为短期解决方案,您可以使用唯一标识符替换构造函数参数,然后使用另一种语言(如java或python),您可以使用空字符串或根据布尔条件使用所需内容替换文件中的这些标识符。希望更有经验的typescript/angular2用户能想出一个真正的解决方案