注意:我正在使用Angula rc2
我的目标是:在服务指令中设置属性值
我设置了一个使用服务的自定义指令:
@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++;
}
}
我得到的错误:
错误:(SystemJS)错误:无法解析UploadFile的所有参数:(?)
我尝试过的(单身和全部):
答案 0 :(得分:1)
Angular 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)
}
}