2016-07-11 4 views
0

Я добавляю функциональность к существующему приложению, которое использует Angular 1.5.7 вместе с TypScript, я раньше не использовал ни одну из этих технологий и не столкнулся с тупик.Получение следующей ошибки: TypeError: Невозможно прочитать свойство «InviteUser» неопределенного

Я получаю следующую ошибку TypeError: Не удается прочитать свойство «InviteUser» неопределенной

Вот мой код.

AddEditContactController.ts

import CT = require('../../models/commontypes'); 
import E = require('../../models/Employers'); 
import * as Common from "../../../common/commonapp"; 
import EmployerService = require('../services/EmployerService'); 

class AddEditContactController { 
    static controllerId = 'addEditContact'; 
    static $inject = ['$uibModalInstance', '$routeParams', '$http', Common.LookupService.serviceId, 'Item' ]; 

    public InviteSent: boolean = false; 
    public OrganisationID: number; 

    constructor(protected $modalInstance: ng.ui.bootstrap.IModalServiceInstance, 
     private $routeParams: E.Employed.IViewEmployerProfesionalBodyRouteParams, 
     protected $http: ng.IHttpService, 
     private LookupService: Common.LookupService, 
     public Item: E.Employed.Contact, 
     private EmployerService: EmployerService) 
     { 
      this.OrganisationID = +$routeParams.EmployerID; 
     } 

    public Cancel() { 
     this.$modalInstance.dismiss('cancel'); 
    } 

    public Save(form) { 
     if (form.$valid) { 
      //don't need to pass anything back because the same instance we passed in will have been manipulated 
      this.$modalInstance.close(this.Item); 
     } 
    } 

    public SendContactInvite(form) { 
     if (form.$valid) { 
      this.EmployerService.InviteUser(this.Item.ID, this.OrganisationID).then(() => { // The Error is pointing to this line 
       this.InviteSent = true; 
      }); 
     } 
    } 

} 

    export = AddEditContactController; 

Ошибка указывает на строку в функции SendContactInvite, как ItemID и OrganisationID содержат значение, хотя, Я-то отсутствует?

Вот остальные

EmployerService.ts

InviteUser(ContactID: number, OrganisationID: number): ng.IHttpPromise<{}> { 
     return this.$http({ 
      url: '/employer/InviteUser', 
      method: 'POST', 
      data: { 
       ContactID: ContactID, 
       OrganisationID: OrganisationID 
      } 
     }); 
    } 

AddEditContact.html

<div class="form-group"> 
    <div class="pull-right ng-scope"> 
    <button type="button" class="btn btn-employed" ng-click="modal.SendContactInvite(form)" ng-disabled="form.$invalid"><span class="glyphicon glyphicon-send" aria-hidden="true" uib-tooltip="Invite contact to become a member" tooltip-append-to-body="true"></span> Send Invite</button> 
    </div> 

Любая помощь/совет будет ppreciated, заранее спасибо

+0

Вероятно, это потому, что «это» в сфере исполнения не так, как вы думаете. Попробуйте сделать это в своем 'AddEditContactController' ctor:' this. SendContactInvite = это. SendContactInvite.bind (это); '. Это устраняет проблему? –

+0

Nope .. Я по-прежнему получал ту же ошибку – HitTheSky

ответ

0

При указании, что должно быть введено в классе вы не указали EmployerService

static $inject = [ 
    '$uibModalInstance', 
    '$routeParams', 
    '$http', 
    Common.LookupService.serviceId, 
    'Item' 
]; 

Вам нужно будет добавить его в список инжектированных пунктов:

static $inject = [ 
    '$uibModalInstance', 
    '$routeParams', 
    '$http', 
    Common.LookupService.serviceId, 
    'Item', 
    'EmployerService' // <---- NEW!!! 
]; 
+0

Я попытался это сделать, но он заставил кнопку открыть это представление, чтобы остановить работу над кликом, я также попытался добавить «EmployerService.serviceId» вместо «EmployerService» " – HitTheSky

+0

Ваше предложение сработало при добавлении' EmployerService.serviceID'. Также возникла проблема с линией вверху 'import EmployerService = require ('../ services/EmployerService');' которая указывала на неправильный путь, но не отображала ошибки. благодаря – HitTheSky

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