2017-01-09 5 views
1

angular2アプリはtypescriptです。ng2-dragulaを使用しています。ここ はコンストラクタです:例外:未定義の 'addInstrumentToStage'プロパティを読み取ることができません

constructor( private dragulaService: DragulaService, 
       private audioFinderService:AudioFinderService) {} 

、その後ngOnInit():

public ngOnInit(): any { 

     this.dragulaService.setOptions('second-bag', { 

        moves: function (el, container, handle) { 

           var file=this.audioFinderService.audioGetter(); 
           this.audioFinderService.removeFromStage(); 

とラインthis.audioFinderService.audioGetter();ではと文句を言い:

error_handler.js:50 EXCEPTION: Cannot read property 'audioGetter' of undefined 

は、私は依存性注入を作ってみましたコンストラクタですが、それは認識していないようです。audioFinderService

はここAudioFinderServiceについての唯一の奇妙な事は、それが別のサービスを注入されていることであるAudioFinderService

@Injectable() 
export class AudioFinderService { 
     constructor(private playService:SelectedInstrumentsService,private http:Http) { } 
    } 

です。だから、入れ子依存性注入が失敗したと思いますか?あなたが代わりに脂肪矢印synthaxのfunctionは、あなたがページに参​​照のうえれるthisを失っている使用しているとき

答えて

2

変更

moves: function (el, container, handle) {//<-- 'this' will refer to the function object 

           var file=this.audioFinderService.audioGetter(); 
           this.audioFinderService.removeFromStage(); 

moves: (el, container, handle)=> {//<-- 'this' will refer to the page 

           var file=this.audioFinderService.audioGetter(); 
           this.audioFinderService.removeFromStage(); 

に問題があります。 How to access the correct `this` inside a callback?

を:

は、私はあなたが正しいthisを参照する方法については、この偉大な答えを見てみることをお勧め

関連する問題