typescript가 새로 생겼습니다. 컨트롤러를 만들었으므로 컨트롤러에서 서비스를 주입해야만 해당 메서드를 사용할 수 있습니다.하지만 서비스 기능을 사용할 수는 없습니다. 및 던지는 오류.TypeCript에서 컨트롤러에 서비스를 삽입 할 수 없습니다
오류
TypeError: _this.marketingService.getAllActiveItems is not a function
at ExportController.getRealCustomerInfo (exportCtrl.js:20)
at $parseFunctionCall (angular-1.3.js:12475)
at callback (angular-1.3.js:21703)
at ChildScope.$eval (angular-1.3.js:14571)
at ChildScope.$apply (angular-1.3.js:14670)
at HTMLInputElement.<anonymous> (angular-1.3.js:21708)
at HTMLInputElement.dispatch (jquery.min.js:14)
at HTMLInputElement.a.handle (jquery.min.js:14)
컨트롤러
module Marketing.GetRealExportCtrl {
import IStateParamsService = ng.ui.IStateParamsService;
import IFlashService = Flash.Services.IFlashService;
class ExportController {
listFilters: any;
fileterExport: any;
currentValue: string;
filterValueSelected: string;
listNumber: number;
reports: ICustomerInfo[];
static $inject = ['$stateParams', 'marketingService', '$scope'];
constructor(private marketingService: IMarketingService) {
this.listFilters = [
{
name: 'All',
listNumber: 1
},
{
name: 'All PCs',
listNumber: 2
},
{
name: 'All BPs',
listNumber: 3
}];
this.fileterExport = this.listFilters[0];
this.listNumber = this.listFilters[0];
}
changeFilter =(): void => {
this.listNumber = this.fileterExport.listNumber;
}
getRealCustomerInfo =() => {
this.marketingService.getRealCustomerInfo(this.listNumber)
.then((reports: ICustomerInfo[]) => {
this.reports = reports;
}, function (err) {
var e = err;
console.log(e);
});
}
}
angular
.module('Marketing')
.controller('ExportController', ExportController);
}
내 마케팅 서비스
module Marketing.MarketingService {
import IAjaxService = Common.IAjaxService;
import AjaxServiceOptions = Common.ajaxService.AjaxServiceOptions;
import IAjaxResponse = Common.IAjaxResponse;
class MarketingService implements IMarketingService {
constructor(
private ajaxService: IAjaxService,
private $translate: ng.translate.ITranslateService,
private $q: ng.IQService) {
this.$q = $q;
}
getRealCustomerInfo = (listNumber: number): ng.IPromise<ICustomerInfo[]> => {
return this.ajaxService.makeAdminCall('marketingApi', 'getRealCustomerInfo', new AjaxServiceOptions({
cache: false,
defaultErrorMessage: 'Loading Customers failed'
})).then((result: IAjaxResponse) => {
if (result.data.isSuccessful)
return result.data.data;
});
}
}
service.$inject = ['ajaxService', '$translate', '$q'];
function service(ajaxService, $translate, $q) {
return new MarketingService(ajaxService, $translate, $q);
}
angular
.module('Marketing')
.service('marketingService', service);
}
인터페이스는 나를 위해
declare module Marketing {
export interface ICustomerInfo {
CustomerID: number;
CustomerName: string;
Phone: string;
Phone2: string;
MobilePhone: string;
Email: string;
MainAddress1: string;
CustomerTypeID: number;
CustomerTypeDescription: string;
SponsorID: number;
SponsorName: string;
EnrollerID: number;
EnrollerName: string;
PriceTypeID: number;
PriceTypeDescription: string
}
export interface IMarketingService {
getRealCustomerInfo: (listNumber: number) => ng.IPromise<ICustomerInfo[]>;
}
}
컨트롤러에서 this.marketingService.getRealCustomerInfo(this.listNumber)
기능을 찾을 수없는 것 같다. 저는 지금부터 며칠 째 붙어 있습니다. 왜 그런 일이 일어나고 있는지 전혀 모르겠습니다. 도와주세요. 미리 감사드립니다.