2016-05-15 16 views
0

に動的にAngular2コンポーネントをロードしますDynamicComponentLoaderは非推奨で、ViewContainerRefComponentResolverに行きましたが、リゾルバがコンポーネントを適切に作成しているとは思いません。それは最後に追加するだけです。どのように私はそれをコンポーネント</li> </ol> <p>を返す場所</li> <li>Iを与える、私は</p> <ol> <li>によってその場でAngular2コンポーネントを作成しようとしているのdiv

私は間違っていますか?

私はソースコードとplnkr作成しました:多分あなたはこの

const injector = ReflectiveInjector.fromResolvedProviders([], this._viewContainer.parentInjector); 
this._currentComponentRef = this._viewContainer.createComponent(factory, 0, injector, []); 

代わりの

this.viewContainer.createComponent(factory, 0, this.viewContainer.injector)); 

ここ http://blog.lacolaco.net/post/dynamic-component-creation-in-angular-2/を見てみるを使用する必要がありますhttp://plnkr.co/edit/a2esZiVpiV5f1r4uEufX?p=preview

@Component({ 
    selector : 'marker-component', 
    template : '<strong>OH BABY ITS WORKING</strong>' 
}) 
class MarkerComponent { 

} 

@Component({ 
    selector: 'my-app', 
    template : ` 
    <div id="map"></div> 
    ` 
}) 
export class App implements NgOnInit { 

    map: any 

    constructor(
    private compiler: ComponentResolver, 
    private viewContainer: ViewContainerRef) { 

    } 

    ngOnInit() { 
    this.map = L.mapbox.map('map', 'mapbox.streets').setView([40, -74.50], 9); 
    var cssIcon = L.divIcon({ 
     // Specify a class name we can refer to in CSS. 
     className: 'css-icon', 
     html: `<marker-component></marker-component>`, 
     iconSize: [60, 60] 
    }); 
    L.marker([40, -74.50], {icon: cssIcon}).addTo(this.map); 

    this.compiler.resolveComponent(MarkerComponent).then((factory) => 
     this.viewContainer.createComponent(factory, 0, this.viewContainer.injector)); 
    } 
} 

bootstrap(App, [...HTTP_PROVIDERS]).catch(err => console.error(err)); 
+0

ここに私の例を見てくださいhttp://stackoverflow.com/a/372​​32017/370935 –

+0

@Aredhel私は見ましたが、私は深く迷っています。私はターゲットを見つけるために何が必要か、レンダラーをブートストラップする方法を理解できないようです。 –

+0

レンダラは 'app.component.ts'、' this.renderer = TwoRendererComponent'に割り当てられ、ターゲットは 'DclWrapperComponent'テンプレートの'#target'というラベルで '@ViewChild(...)ターゲット。コンポーネントは 'target.createComponent'を使って' updateComponent'で作成されます。 –

答えて

0

関連する問題

 関連する問題