【发布时间】:2017-02-25 13:03:03
【问题描述】:
我有一个界面:
export interface ISearchService {
search(terms: string): Observable<any>;
}
我有两个服务实现了这个接口:
SearchMaleEmployeeService:
@Injectable()
export class SearchMaleEmployeeService implements ISearchService {
constructor() { }
public search(terms: string): Observable<any> {
console.log('call: SearchMaleEmployeeService.search ' + terms);
}
}
搜索FemaleEmployeeService:
@Injectable()
export class SearchFemaleEmployeeService implements ISearchService {
constructor() { }
public search(terms: string): Observable<any> {
console.log('call: SearchFemaleEmployeeService.search ' + terms);
}
}
在我的search.component中,我想调用服务的搜索方法。
我的 search.component:
export class SearchComponent {
constructor(@Inject('ISearchService') private searchService: ISearchService) { }
onSearch(terms: string) {
this.searchService.search(terms);
}
}
最后,在托管 SearchComponent 的组件中:
providers: [
{ provide: 'ISearchService', useValue: SearchFemaleEmployeeService}
],
当我在 SearchComponent 中运行 onSearch 方法时,我得到了这个错误:
EXCEPTION: Error in ./SearchComponent class SearchComponent - inline template:0:127 caused by: this.searchService.search is not a function
我认为这是因为我试图从接口调用一个方法,但是当我console.logthis.searchService 时,它返回SearchFemaleEmployeeService,这意味着这是一个很好的实例。为什么会出现这个错误?
【问题讨论】:
标签: angular methods typescript interface