2016-12-21 20 views
2

アンギュラバージョン2.2.0以下では、私はラインでのエラーの下に取得しています、プロパティ 'し、' タイプに存在しません 'ComponentFactory <SpinnerComponent>'

Plunkerリンク、

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

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

エラー 'プロパティ'は 'ComponentFactory'タイプに存在しません。

これと解決の理由は何か、提案してください。ありがとう!

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(); 
     } 
    } 
} 

答えて

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

ComponentFactory<T>ないPromise<ComponentFactory<T>>を返します - それは非同期ではありません。

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

あなたはおそらく@NgModule 'に' SpinnerComponent'を追加しませんでした –

+0

おかげで、今でエラーが削除されていないが、私が実行しているとき、私はエラーを取得M、「SpinnerComponentが見つかりませ部品工場」 ({entryComponents:[Spin​​nerComponent]、...}) 'これは、動的に追加されるすべてのコンポーネントに必要です。 –

+0

私は@宣言の下に、私がentryComponentsの下に置こうとすると、 "SpinnerComponentコンポーネントがNgModuleの一部ではないか、またはモジュールがモジュールにインポートされていないというエラーがスローされます; Zone:; Task:" –

関連する問題