2016-10-04 6 views
0

참고 : 나는 Angula RC2에게각도 2로 서비스에서 지시를받는 방법?

내 목표를 사용하고있어입니다 :

: 나는 서비스를 사용하는 사용자 지정 지침을 설정

는 서비스에서 지시어에 속성 값을 설정하려면

@Directive({ selector: '[chooseFile]' }) @Injectable() export class ChooseFileDirective implements OnInit { property1: number = 1; constructor(private _element: ElementRef, private _uploadService: UploadFile) { } ngOnInit() { this._uploadService.foo(); } } 

UploadService

@Injectable() 
export class UploadFile { 

    constructor(private _chooseFileDirective: ChooseFileDirective) {} 

    foo() { 
    // update variable on calling directive 
    _chooseFileDirective.property1++; 
    } 
} 

오류 나는 점점 해요 :

Error: (SystemJS) Error: Can't resolve all parameters for UploadFile: (?)

내가 (모두 함께 싱글) 시도하는 것 :

  • 지시어에 @Injectable() 장식을 추가
  • 에서 제공 업체에 지시를 추가 app.component
  • add 서비스의 생성자 : @Inject (ChooseFileDirective) _chooseFileDirective : ChooseFileDirective

답변

1

각도 2는 지시문/구성 요소를 삽입 할 수 없습니다. 그것은 지시에 귀 기울이는 방법 일 것입니다. 예를 들어 fileUploaded $ event를 나타내는 EventEmitter를 만들 수 있으므로 지시문에서 다음과 같이 할 수 있습니다.

export class ChooseFileDirective implements OnInit { 
    property1: number = 1; 

    constructor(private _element: ElementRef, private _uploadService: UploadFile) { } 

    ngOnInit() { 
    this._uploadService.foo(); 
    this.fileUploaded$.subscribe(file => //do your stuff) 
    }  
} 
+0

감사합니다. 좋은 해결책 같아. 나는 애플 리케이션에서 다른 것들을 리팩토링 할 필요가있다. 그리고 나서 이것을 테스트하고 대답을 받아 들일 것이다. :) – dragonmnl

관련 문제