2016-06-25 1 views
3

angular 2: view.setLocal('\$implicit', change.item);

verwendet, aber mit rc.1 Ideen mit dem, was diese Arbeit zu bekommen wie der Versuch, entfernt zu arbeiten:

http://teropa.info/blog/2016/03/06/writing-an-angular-2-template-directive.html

ngDoCheck():void { 
     if (this.differ) { 
      let changes = this.differ.diff(this.items); 
      if (changes) { 
       console.log('template', this.template); 
       changes.forEachAddedItem((change) => { 
        let view = this.viewContainer.createEmbeddedView(this.template); 
        //todo: fix as broken in rc.1 
        //view.setLocal('\$implicit', change.item); 
        this.views.set(change.item, view); 
       }); 
       changes.forEachRemovedItem((change) => { 
        let view = this.views.get(change.item); 
        let idx = this.viewContainer.indexOf(view); 
        this.viewContainer.remove(idx); 
        this.views.delete(change.item); 
       }); 
      } 
     } 
    } 

wie würden Sie die setlocal auf die neue Version wechseln von gesetztem Kontext? Grüße

Sean

Antwort

2

EmbeddedViewRef.setLocal und getLocal wurden entfernt.

Verwenden Sie EmbeddedViewRef.context, um auf den Kontext zuzugreifen.

+0

können Sie mit dem Schnipsel helfen? Ich habe meine Frage mit dem Code aktualisiert – born2net

3

Die Lösung ist zu tun: view.context.$implicit = change.item; this.views.set(change.item, view);