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

Angular2 - 'ng build -prod' results in Supplied parameters do not match any signature of call target

我在用什么

我想做什么

会发生什么

Supplied parameters do not match any signature of call target.

我试过的

组件HTML

下面是导致问题的 HTML 片段。我从输入字段中获取值并将它们推送到一个函数。当 运行 'ng build -watch' 时,我没有任何问题,一切正常。只有在 '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>

组件打字稿文件

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);
  }


}

任何帮助将不胜感激:)

您的提交表单需要 6 个参数,而您在模板中使用 5 个值调用该函数。 您缺少 "upload".

的值

使用--prod(生产模式)angular-cli 将使用AoT(提前编译)。

AoT 对类型、签名和其他东西更加敏感。

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

这里有两个选项:

第一种(也是建议的)方法:将其设为可选,如 submitForm(title: string, reference: string, date: string, auditorName: string, newCompanyName: string, upload?: Upload)

备选方案:在模板的最后一个参数处传递 null

希望对您有所帮助。


更新:在你编辑你的问题和你的评论之后,我可能应该只在这里添加第三个选项:如果你的函数中没有使用它,只需删除参数。