albanx
albanx

Reputation: 6333

Angular 2 how to resolve promise manually?

How would be possible to resolve a promise in Angular 2 inside a directive? I am trying to do a simple image loading directive:

@Directive({
    selector: '[carouselImage]',
    host: {
        '(load)' : 'onImageLoad()'
    }
})
class CarouselImageDirective {
    private _promise: Promise;
    private _loaded: boolean = false;

    constructor(private _elRef: ElementRef, private _renderer: Renderer) {

    }

    loadImage() {
        this._promise = new Promise<ElementRef>( resolve => {
            resolve(this._elRef);
        });

    }

    onImageLoad() {
        this._promise.resolve(); //this won't work
        this._loaded = true;
        console.log('Image loaded ', this._elRef);
    }
}

My attempt so far does not work.

Upvotes: 1

Views: 812

Answers (1)

Thierry Templier
Thierry Templier

Reputation: 202256

You could try something like that:

loadImage() {
    this._promise = new Promise<ElementRef>( resolve => {
        this.resolve = resolve;
    });

}

onImageLoad() {
    this.resolve(this._elRef);
    this._loaded = true;
    console.log('Image loaded ', this._elRef);
}

Upvotes: 3

Related Questions