angular - Các tham số được cung cấp không khớp với bất kỳ chữ ký nào của mục tiêu gọi - Typescript
Tôi có một mô hình gọi là FilterOperation.ts như sau:
export class FilterOperations {
constructor(
public mainFilter : string,
public currencyType : string,
public status : string
) { }
}
Sau đó hãy định nghĩa component của tôi như sau:
import { Component, OnInit, Input } from "@angular/core";
import { FormsModule } from '@angular/forms';
import 'rxjs/operator/finally';
//models
import { Session } from './src/models/session';
import { Client } from './src/models/client';
import { Operation } from './src/models/operation';
import { FilterOperations } from './src/models/filterOperations';
//services
import { OperationSearchService } from './src/services/operations_admin.service';
//constants
import * as constantsValues from "../../core/constants/constants";
@Component({
templateUrl: './app/views/operations_admin/src/templates/operations_admin.html',
styleUrls: ['./app/views/operations_admin/css/operations_admin.css'],
providers: [ OperationSearchService ]
})
export class OperationsAdminComponent implements OnInit {
@Input() filter: FilterOperations;
errorMessage: string;
clientFound: Client;
sessionList: Session[];
operationCount: number;
mainSearchSelector: string;
constructor (private operationSearchService: OperationSearchService) {
}
ngOnInit() {
this.filter = new FilterOperations(); //HERE GOES THE ERROR
}
onChangeMainFilter(newValue) {
this.mainSearchSelector = newValue;
}
findOperations() {
//some code
}
}
Nó cứ gửi cùng một tin nhắn khi tôi cố gắng biên dịch: "Các tham số cung cấp không khớp với bất kỳ chữ ký nào của mục tiêu gọi". Tôi đã làm gì sai khi khởi tạo giá trị của bộ lọc:
this.filter = new FilterOperations();
Câu trả lời #1
Mã của bạn cho FilterOperations:
export class FilterOperations {
constructor(
public mainFilter : string,
public currencyType : string,
public status : string
) { }
}
tương đương với:
export class FilterOperations {
public mainFilter: string;
public currencyType: string;
public status: string;
constructor(mainFilter: string, currencyType: string, status: string) {
this.mainFilter = mainFilter;
this.currencyType = currencyType;
this.status = status;
}
}
Mặc dù bạn có lẽ định làm:
export class FilterOperations {
public mainFilter: string;
public currencyType: string;
public status: string;
constructor() {}
}
Trong hai trường hợp đầu, hàm khởi tạo yêu cầu 3 đối số, nhưng khi bạn khởi tạo nó, bạn không truyền bất kỳ đối số nào:
this.filter = new FilterOperations();
Nếu bạn muốn một constructor rỗng thì hãy sử dụng đoạn mã thứ 3 của tôi.
Bạn cũng có thể làm:
export class FilterOperations {
constructor(
public mainFilter?: string,
public currencyType?: string,
public status?: string
) { }
}
Bây giờ tất cả các đối số đều tùy chọn, bạn có thể gọi ctor mà không cần đối số.
