служба angular с помощью @injectable и модуля es6

В angular нам нужно создать класс обслуживания @Injactable и предоставить его нашему проекту.

Теоретически мы можем импортировать модуль es6, который также выполняется как одноэлементный сервис.

Кроме того, что это не «угловой способ», почему этот метод не так распространен?

угловой путь

import { Injectable } from '@angular/core';
@Injectable()
export class fo {
   getFo():{
   }
}

es6 способ

    const bla = []
    const fo() => {return bla}
    export {
        fo
    }

person Shahar ドーン Levi    schedule 05.04.2017    source источник
comment
Два ваших примера не имеют ничего общего.   -  person a better oliver    schedule 05.04.2017


Ответы (1)


@Injectable() необходим только тогда, когда ваша служба внедряет другие службы.

Пример:

@Injectable()
export class fo {
   constructor(private myOtherService: MyOtherService){}
}

В остальном вы правы, что это практически то же самое, что и возврат const. Однако, как вы могли бы оценить, рекомендуется добавить аннотацию и логику.

Источник: https://angular.io/docs/ts/latest/cookbook/dependency-injection.html#!#-injectable-

Технически декоратор @Injectable() требуется только для класса обслуживания, который имеет свои собственные зависимости.


Вкратце, мы используем @Injectables для получения/установки данных и связи между компонентами и во всем нашем приложении, которые являются частью нашего дерева внедрения зависимостей. В официальных документах есть более подробное руководство о том, почему вы должны использовать @Injectable().

Почему @Injectable()?

@Injectable() помечает класс как доступный инжектору для создания экземпляра. Вообще говоря, инжектор сообщает об ошибке при попытке создать экземпляр класса, который не помечен как @Injectable().

Источник: https:/ /angular.io/docs/ts/latest/guide/dependency-injection.html#!#why--injectable--

person eko    schedule 05.04.2017
comment
В остальном вы правы, что это практически одно и то же Абсолютно нет. - person a better oliver; 05.04.2017
comment
@zeroflagL да, это было преувеличенное заявление, и я сожалею, что написал это: D, но, поскольку OP использовал сервис только для возврата const; для этого использования я полагаю, что это это практически одно и то же, сэр. И, конечно же, я предполагал, что метод OPs getFo() возвращает тот же const, что и во втором примере. - person eko; 05.04.2017
comment
Вы правы, что в данном конкретном случае это, вероятно, не имело бы значения, но это не пример из реального мира. Пример в вопросе предназначен только для иллюстрации сути, и ответ не должен ограничиваться этим. - person a better oliver; 05.04.2017
comment
@zeroflagL Я постараюсь дать более подробную информацию по этому вопросу, но, как вы понимаете, мне также потребуется объяснить систему внедрения зависимостей Angular и так далее. Я попытался дать разумный ресурс для чтения с моим последним редактированием. Я ценю вашу критику :-) - person eko; 05.04.2017