2016-04-06 21 views
0

angular2-universal-starter projesini kullanıyorum.Angular2-universal-starter'de dinamik bileşen yükleyici ile çalışmayan veri-bağlayıcı

Bu yüzden, bir nesneyi @Input kullanarak bir çocuk bileşenine aktarmaya çalışıyordum, ancak düzgün çalışmıyor.

Çocuk bileşenini yüklemek için dinamik bileşen yükleyicisini kullandım ve nesneyi alt bileşenlere aktarmak istiyorum. Sadece senin yapmak gerekir sanırım

app.component.ts

import {Component, Directive, Renderer, DynamicComponentLoader, ElementRef} from 'angular2/core'; 
import {Http} from 'angular2/http';  
import {headingComponent} from './heading.component'; 
@Directive({ 
    selector: '[x-large]' 
}) 
export class XLarge { 
    constructor(element: ElementRef, renderer: Renderer) { 
    // we must interact with the dom through Renderer for webworker/server to see the changes 
    renderer.setElementStyle(element.nativeElement, 'fontSize', 'x-large'); 
    } 
} 
@Component({ 
    selector: 'app', 
    directives: [  
    XLarge 
    ], 
    template: ` 
    <div> 
     <div> 
     <span x-large>Hello, {{ user.name }}!</span> 
     </div> 
     <icici-heading [user]="user"></icici-heading>  
    </div> 
` 
}) 
export class App { 
    public user;  
    constructor(dcl: DynamicComponentLoader, elementRef: ElementRef) {   
     dcl.loadNextToLocation(headingComponent, elementRef); 
    } 
    ngOnInit(){ 
     this.user = { "id": 11, "name": "Mr. Nice" }; 
    } 
} 

heading.component.ts

import {Component, OnInit,Input} from 'angular2/core'; 

@Component({ 
    selector: 'icici-heading', 
    template: ` 
     <div> 
     <!--{{user.name}}-->this is not working 
     {{name}} 
     </div> 
` 
}) 

export class headingComponent implements OnInit { 
    @Input() user; 
    name: string; 
    constructor() { } 
    ngOnInit() { 
     this.name="heading is rendered"; 
    }  
} 
+1

başlık değerler geçirmek gerektiğinde

{{user?.name}} 

Elvis veya güvenli-navigasyon operatörü sadece .name değerlendirir yanıltıcıdır. Bağımlılık enjeksiyonu, yapıcı parametreleri için neyin geçtiği ile ilgilidir. Sorunuz veri bağlama ile ilgili. –

+0

@ GünterZöchbauer sugget bunun için uygun bir başlık lütfen –

+0

Tarayıcı konsolunda bir hata mesajı alıyor musunuz? –

cevap

0

: Aşağıdaki

benim kod parçacığı olduğunu Değer henüz mevcut olmadığında daha fazla bağışlama kodu.

Bu çalışacaktır: user != null

dinamik olarak eklenen bileşenler için de imperatively

dcl.loadNextToLocation(headingComponent, elementRef) 
.then(cmpRef => cmpRef.instance.user = this.user);