2016-02-26 3 views
3

Я получаю эту ошибку сборки, когда использую параметр decorator в методе. Класс реализует интерфейс. Вот интерфейс и класс:Поставляемые параметры не соответствуют какой-либо сигнатуре целевого вызова

export interface IClient{ 
    getServerConfig(): Observable<Response> ; 

    getDashboard(): Observable<Response>; 

    deploy(channelId: string): Observable<Response>; 
} 

export class Client implements IClient { 

    public constructor(@Inject(Http) private http: Http, @Inject(Model) private config: Model) { 
     super(http, config); 
    } 

    public getServerConfig(): Observable<Response> { 
     return null; 
    } 

    public getDashboard(): Observable<Response> { 
     return null; 
    } 

    public deploy(@Body('param') channelId: string): Observable<Response> { 
     return null; 
    } 
} 

При построении Я получаю эту ошибку

Supplied parameters do not match any signature of call target. 

прямо в функции развертывания.

Проблема заключается в параметрировании декоратора рядом с параметром channelId. Теперь я не могу просто удалить его, поскольку мне это нужно, поэтому мне интересно, есть ли способ сохранить определение интерфейса и декоратор. Декораторы не допускаются в интерфейсах, поэтому это не вариант.

Любые идеи?

ответ

2

Поставляемые параметры не соответствуют какой-либо сигнатуре цели вызова.

Самое быстрое решение: const BodyAny:any = Body и использовать BodyAny. В противном случае исправьте определение типа для Body.

+0

Спасибо, ты только что указал мне в правильном направлении. Я забыл параметр декоратора. –

0

У меня была такая же ошибка, и проблема была отсутствующая @Injectable() на обслуживании, о котором она жаловалась.

Просто импортировать и добавлять декоратор сортировал его!

Смежные вопросы

 Смежные вопросы