Tìm kiếm trang web

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ố.