2016-12-21 3 views
2

In unten abgewinkelte Ausführung 2.2.0, ich bin an der Linie unter Fehler bekommen,Property 'und dann' existiert nicht auf Typ 'Component <SpinnerComponent>'

Plunker Link

http://plnkr.co/edit/f6GBBQan7z4I9K1qBZOi?p=preview

spinnerRef.then((factory: ComponentFactory<any>) => { 

Fehler, Eigenschaft 'then' existiert nicht beim Typ 'ComponentFactory'

Was könnte Grund dafür sein und die Lösung, bitte vorschlagen. Vielen Dank!

import { Injectable, ApplicationRef, ViewContainerRef, Component, ComponentRef, ComponentFactoryResolver, ComponentFactory, ViewChild } from '@angular/core'; 

import { SpinnerComponent } from '../components/blockui/blockui.component'; 


@Injectable() 
export class SpinnerService { 
    spinnerComp: ComponentRef<any>; 

    constructor(private _appRef: ApplicationRef, private _resolver: ComponentFactoryResolver) { 
    } 

    public start() { 
     let elementRef: ViewContainerRef = (<any>this._appRef)['_rootComponents'][0].location; 

     return this.startInside(elementRef, null); 
    } 

    public startInside(elementRef: ViewContainerRef, anchorName: string) { 

     let spinnerRef = this._resolver.resolveComponentFactory(SpinnerComponent); 

     spinnerRef.then((factory: ComponentFactory<any>) => { 
      this.spinnerComp = elementRef.createComponent(factory) 
     }); 
    } 

    public stop() { 
     if (this.spinnerComp) { 
      this.spinnerComp.destroy(); 
     } 
    } 
} 

Antwort

1
resolveComponentFactory(component: Type<T>) : ComponentFactory<T> 

gibt ein ComponentFactory<T> kein Promise<ComponentFactory<T>> - es ist nicht async ist.

https://angular.io/docs/ts/latest/api/core/index/ComponentFactoryResolver-class.html

public startInside(elementRef: ViewContainerRef, anchorName: string) { 
    let factory = this._resolver.resolveComponentFactory(SpinnerComponent); 
    this.spinnerComp = elementRef.createComponent(factory); 
} 
+0

Danke, ist jetzt Fehler entfernen, aber wenn ich laufe ich Fehler bin immer „Keine Komponente Fabrik für SpinnerComponent gefunden“ –

+0

Sie wahrscheinlich hinzufügen, nicht 'SpinnerComponent' zu' @NgModule ({entryComponents: [SpinnerComponent], ...}) 'Das ist für alle dynamisch hinzugefügten Komponenten erforderlich. –

+0

Ich unter @ Deklaration, wenn ich versuche, unter entryComponents setzen, ist es wirft Fehler "Component SpinnerComponent ist nicht Teil eines NgModule oder das Modul wurde nicht in Ihr Modul importiert.; Zone: ; Aufgabe:" –

Verwandte Themen