【问题标题】:argument of type is not assignable to parameter of type any[]类型的参数不能分配给任何类型的参数 []
【发布时间】:2018-08-05 01:05:45
【问题描述】:

我的代码有一些问题,这是错误

消息:''Employee' 类型的参数不能分配给'any []' 类型的参数。 'Employee' 类型中缺少 'includes' 属性。

这是服务

import { Injectable } from '@angular/core';
import { AngularFireDatabase, AngularFireList, AngularFireObject } from 'angularfire2/database';
import { Observable } from 'rxjs';
import { Employee } from '../Employee';
import { FirebaseApp } from 'angularfire2';

@Injectable()
export class EmployeeService {
 
  employees: AngularFireList<any[]>;
  Employee: AngularFireObject<any>;

  constructor( 
    public af: AngularFireDatabase
  ) { 
    this.employees = this.af.list('/employees/employees') as AngularFireList <Employee[]>;
    
  }
getEmployees(): AngularFireList <any> {
  return this.employees ;

}
addEmployee(emp:Employee)
{
  
  return this.employees.push(emp);
}
}

这是我的组件

import { Component, OnInit } from '@angular/core';
import { Employee } from '../../Employee';
import { FlashMessagesService } from 'angular2-flash-messages';
import { timeout } from 'q';
import { Router } from '@angular/router';
import { EmployeeService } from '../../services/employee.service';
@Component({
  selector: 'app-add-employee',
  templateUrl: './add-employee.component.html',
  styleUrls: ['./add-employee.component.css']
})
export class AddEmployeeComponent implements OnInit {
  employee:Employee={
    
    firstName:"",
    lastName:"",
    email:"",
    country:"",
    city:"",
    phone:0,
    salary:0
  }
  disableSalary:boolean=true;
  constructor(public fashMessagesService : FlashMessagesService, public router:Router,
  public employeeService : EmployeeService
  ) { }

  ngOnInit() {
    
  }


  mySubmit({value,valid}:{value:Employee,valid:boolean}){
    if(this.disableSalary){
      value.salary=0;
    }

    if (!valid) {
      this.fashMessagesService.show('Please Write Correct Info',{cssClass:'alert-danger',timeout:3000});
      //console.log("not correct data");
      this.router.navigate(['add-employee']);
    }else {
      this.employeeService.addEmployee(value);
      this.fashMessagesService.show('Added Successfully!',{cssClass:'alert-success',timeout:3000});
      this.router.navigate(['/']);
      //console.log(this.employee);

    }
  }

}

我不知道到底是什么问题,希望有人能解决。

【问题讨论】:

  • 哪一行触发了错误?

标签: angular typescript


【解决方案1】:

AngularFireList 类型要求列表包含的内容只有一个类型,而不是数组类型。 employees 数组的正确声明是 employees: AngularFireList&lt;Employee&gt;(不是 Employee[],不是 any[])。

它现在失败的原因是因为它希望你将any[] 类型的东西传递给.push(),而Employee 不能分配给any[]

【讨论】:

  • 我把这个“employees: AngularFireList”放上就好了
  • 它会工作,但是你已经绕过了使用 TypeScript 的要点。 :P
猜你喜欢
  • 2019-02-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-05
  • 2019-10-30
  • 1970-01-01
  • 2018-12-26
  • 2021-06-19
相关资源
最近更新 更多