Angular2 - ' ng build -prod'结果提供的参数与呼叫目标的任何签名都不匹配

时间:2017-08-10 13:13:01

标签: angular typescript angular2-aot

我正在使用

我想做的事

  • 运行ng build -prod命令

会发生什么

  • 我收到以下错误:
  

提供的参数与呼叫目标的任何签名都不匹配。

  • 运行&#c; ng build时,此错误并不存在--watch'

我尝试了什么

  • 我删除了一些包含提交按钮的HTML,以便将一些值传递给我的组件打字稿文件中的函数。当我这样做时,构建命令工作正常。

组件HTML

以下是导致此问题的HTML代码段。我从输入字段中获取值并将它们推送到函数中。在运行“构建 - 守望”时,我没有任何问题,一切正常。只有在' prod'命令我在终端

中收到错误



      <div class="vs__details__actions">
        <button class="vs__button" 
        [disabled]="!selectedFiles" 
        (click)="submitForm(newTitle.value, newReference.value, newDate.value, newAuditorName.value, newCompanyName.value); newTitle.value=''; 
        newReference.value=''; newDate.value=''; newAuditorName.value=''; newCompanyName.value=''"> 
        Add 
      </button>
      </div>
&#13;
&#13;
&#13;

组件手稿文件

&#13;
&#13;
import { Component, OnInit } from '@angular/core';
import { ProjectsAddService } from './projects-add.service';
import { Upload } from './upload';
import * as _ from "lodash";

@Component({
  selector: 'upload-form',
  templateUrl: './projects-add.component.html',
  styleUrls: ['./projects-add.component.css']
})
export class ProjectsAddComponent {

  selectedFiles: FileList;
  currentUpload: Upload;

  constructor(private upSvc: ProjectsAddService) { }

  detectFiles(event) {
    this.selectedFiles = event.target.files;
  }

  uploadSingle() {
    let file = this.selectedFiles.item(0)
    this.currentUpload = new Upload(file);
  }

  submitForm(title: string, reference: string, date: string, auditorName: string, newCompanyName: string, upload: Upload) {
    let file = this.selectedFiles.item(0)
    this.currentUpload = new Upload(file);
    this.upSvc.submitForm(title, reference, date, auditorName, newCompanyName, this.currentUpload);
  }


}
&#13;
&#13;
&#13;

非常感谢任何帮助:)

2 个答案:

答案 0 :(得分:3)

使用--prod(生产模式),angular-cli将使用AoT(Ahead of Time编译)。

AoT对类型,签名和内容更加明智。

您的submitForm函数需要一个(非可选的)upload: Upload参数作为最后一个参数,您不会点击该参数。

这里有两个选项:

首先(和建议)方式:将其设为可选,如submitForm(title: string, reference: string, date: string, auditorName: string, newCompanyName: string, upload?: Upload)

替代方法:在模板的最后一个参数处传递null

希望它有所帮助。

更新:在您编辑了问题和评论后,我应该在这里添加第三个选项:如果您的函数中没有使用该参数,请删除该参数。

答案 1 :(得分:1)

您的提交表单需要6个参数,并且您在模板中使用5个值调用该函数。 您错过了&#34;上传&#34;。

的价值