2016-12-13 44 views
1

我有一個是這樣的一個模型叫FilterOperation.ts:提供的參數不匹配,通話對象的任何簽名 - 打字稿

export class FilterOperations { 
    constructor(
    public mainFilter : string, 
    public currencyType : string, 
    public status : string 
    ) { } 
} 

然後定義這樣我的組件:

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

當我嘗試編譯它時,它會一直髮送相同的消息:「提供的參數不匹配調用目標的任何簽名」。我在做什麼錯初始化過濾器的值時:

this.filter = new FilterOperations(); 

回答

9

你的代碼FilterOperations

export class FilterOperations { 
    constructor(
     public mainFilter : string, 
     public currencyType : string, 
     public status : string 
    ) { } 
} 

等同於:

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

雖然你可能是指做:

export class FilterOperations { 
    public mainFilter: string; 
    public currencyType: string; 
    public status: string; 

    constructor() {} 
} 

在前兩個構造函數需要3個參數,但是當你實例化它你不傳遞任何:

this.filter = new FilterOperations(); 

如果你想要一個空的構造函數,然後用我的第三代碼段。
你也可以這樣做:

export class FilterOperations { 
    constructor(
     public mainFilter?: string, 
     public currencyType?: string, 
     public status?: string 
    ) { } 
} 

現在所有的參數都是可選的,你可以調用構造函數與無參數。

+0

第3個代碼段完美工作。謝謝 –

+0

'public'關鍵詞就是事 – Belter

相關問題