2017-04-05 9 views
1

각도에서 @Injactable 서비스 클래스를 생성하고 프로젝트에 제공해야합니다.@injectable과 es6 모듈에 의한 각도 서비스

이론상 우리는 싱글 톤 서비스로 실행되는 es6 모듈을 가져올 수 있습니다.

"각도각"이 아니라는 점을 제외하면이 방법이 그렇게 일반적이지 않은 이유는 무엇입니까? 서비스가 다른 서비스를 주입 할 때

각 방법

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

ES6 방법은

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

당신의 두 가지 예 https://angular.io/docs/ts/latest/guide/dependency-injection.html#!#why--injectable--는 아무런 공통점이 없다. – zeroflagL

답변

2

@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()으로 표시되지 않은 클래스를 인스턴스화 할 때 오류를보고합니다.

출처 :

+0

_ "그보다는 당신이 똑같은 것이 옳다."_ 절대적으로 아닙니다. – zeroflagL

+0

@zeroflagL 네, 그것은 과장된 성명서 였고 나는 그것을 썼습니다 : D하지만 OP는 단지 'const'를 반환하기 위해 서비스를 사용하기 때문에; 이 용도로 나는 그것들을 ** 실제로 ** 똑같은 선생이라고 생각합니다. 그리고 물론 OPs'getFo()'메서드는 두 번째 예제에서와 같은 'const'를 반환한다고 가정합니다. – echonax

+0

이 특별한 경우에는 아마 중요하지 않겠지 만 현실 세계의 예는 아닙니다. 질문의 예는 그 요점을 설명하기위한 것일 뿐이며 그 대답은 그것에 국한되어서는 안됩니다. – zeroflagL