Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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

Tags:

angular

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

used to work but removed with rc.1 any ideas with what as trying to get this working:

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

how would you change the setLocal to the new version of set context? regards

Sean

like image 471
born2net Avatar asked Jun 05 '26 07:06

born2net


2 Answers

The solution is to do: view.context.$implicit = change.item; this.views.set(change.item, view);

like image 121
born2net Avatar answered Jun 07 '26 22:06

born2net


EmbeddedViewRef.setLocal and getLocal have been removed.

Use EmbeddedViewRef.context to access the context.

like image 22
null canvas Avatar answered Jun 07 '26 23:06

null canvas



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!