2016-01-14 3 views
0

У меня есть класс с двумя методами. Мне нужно выполнить первое в бутстрапе приложения, а второй раз - во время работы приложения.Создать singleton класс в машинописи угловой

Мой класс:

import { Profile } from './Profile'; 

class Profilatura { 
    public profile: Profile; 

    /** @ngInject */ 
    first($http: angular.IHttpService): void{ 
     ....... 
     this.profile = ...; 
     ....... 
    } 

    public second(): Profile{ 
     return this.profile; 
    } 
} 

В моем приложении модуля:

import { ProfilaturaService } from './profilatura/ProfilaturaService'; 
angular.module('App') 
    .run(function runBlock($http: angular.IHttpService) { 
     Profilatura.first($http); 
    }) 
    .... 

Почему я получаю Property 'первый' не существует по типу TYPEOF ?????

ответ

1

Profilatura - это объект класса. Вам необходимо сделать first и second методами static. Осторожно - когда вы сделаете это, вы не можете использовать this внутри статических методов больше:

class Profilatura { 
    public static profile: Profile; 

    /** @ngInject */ 
    static first($http: angular.IHttpService): void{ 
     ....... 
     Profilatura.profile = ...; 
     ....... 
    } 

    static public second(): Profile{ 
     return this.profile; 
    } 
} 

Вы также можете сделать Profilatura класс синглтон, делая что-то вроде этого:

class Profilatura { 
     private static instance: Profilatura; 
     static getInstance() { 
      if (!Profilatura.instance) { 
       Profilatura.instance = new Profilatura(); 
      } 
      return Profilatura.instance; 
     } 

     public profile: Profile; 

     /** @ngInject */ 
     first($http: angular.IHttpService): void{ 
      ....... 
      this.profile = ...; 
      ....... 
     } 

     public second(): Profile{ 
      return this.profile; 
     } 
    } 

, а затем использовать его как :

Profilatura.getInstance().first(...) 
+0

Я сделал это, но ошибка остается – Ciro

+0

я обновляю ответ - когда вы идете статический путь вы не можете использовать 'this' внутри методов. Или вы можете использовать одноэлементный шаблон. –

+0

Я пробовал с шаблоном singleton, но я получаю свойство 'getInstance' не существует в типе typeof – Ciro

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