0
私はマークダウンをレンダリングする角度2でパイプとして使用されている活字体で次のクラスを持っています。これは、エラーなしでコンパイルが、マークされた行に実行時例外を打つ:TypeScriptのlambda内のクラススコープへのアクセスは未定義ですか?
var Remarkable = require('remarkable');
@Pipe({
name: 'markdown'
})
export class MarkdownPipe implements PipeTransform {
public remarkable;
constructor(private sanitizer: DomSanitizationService) {
this.remarkable = new Remarkable({
typographer: true
});
this.remarkable.use(this.parseVideos);
}
transform(value: string) : SafeHtml {
if (value != null) {
return this.sanitizer.bypassSecurityTrustHtml(this.remarkable.render(value));
}
return null;
}
public parseVideos(md) : void {
md.inline.ruler.push('video', (state) => {
return this.parseMedia(state, '@', 'video'); // this is undefined
});
}
public parseMedia(state, startingMarker, tokenName) : boolean {
// do stuff
}
}
私はこのコードを実行しようとしたとき、私は私にそれを伝えるランタイムエラーを取得:
_this
は私が上記でコメントしたのと同じ行を指します。どうしてこれなの?私のラムダ式の中でparseMedia
メソッドにアクセスする必要があるとIDEから報告されています。
これに対する最善の解決策は何ですか?
this.remarkable.use(this.parseVideos);
その後方法はMarkdownPipe
のインスタンスにthis
もはやポイントが呼び出されていない場合:あなたがここにそれを渡すためだ
右。私はそれがこのようなものになると思った。ありがとう。私のIDEオートコンプリートは私を捨てました。 – ReactingToAngularVues
クロージャー/ラムダを直接渡すことができるケースはありますか? – stt106
@ stt106あなたは何を意味するのか分かりませんが、明確にすることはできますか? OPで、この場合には間違っていただきまし –