zoukankan      html  css  js  c++  java
  • [Angular 2] Order Dynamic Components Inside an Angular 2 ViewContainer

    By default, when you generate components, they will simply be added to the page in order, one after another. Angular 2 provides methods on the ViewContainer that allow you to reorder components once they’ve been created and provide the order that you want.

    When you want to create a component and insert it at cetern position of the list. Then what you need to do is just pass in a second param, when you call 'createComponent()'.

    import {Component, ViewChild, ViewContainerRef, ComponentFactoryResolver, Input} from '@angular/core';
    import {SimpleService} from "../../serivces/simple.service";
    import {WidgetThree} from "../widgets/widget-three.component";
    
    @Component({
        moduleId: module.id,
        selector: 'home',
        templateUrl: 'home.component.html'
    })
    export class HomeComponent {
    
        @ViewChild('container', {
            read: ViewContainerRef
        }) container;
    
        constructor(private resolver: ComponentFactoryResolver, private simpleService: SimpleService) {
        }
    
        ngAfterContentInit(){
            const WidgetFactory = this.resolver.resolveComponentFactory(WidgetThree);
            this.container.createComponent(WidgetFactory);
            this.container.createComponent(WidgetFactory);
            this.container.createComponent(WidgetFactory);
            this.container.createComponent(WidgetFactory);
            const comRef = this.container.createComponent(WidgetFactory); // return a componentRef
            comRef.instance.message = "I am last"; // using componentRef's instance prop to access the component prop
            comRef.instance.renderer.setElementStyle(
                comRef.instance.input.nativeElement,
                'color',
                'red'
            )
        }
    
        onClick(){
            const WidgetFactory = this.resolver.resolveComponentFactory(WidgetThree);
            const comRef = this.container.createComponent(WidgetFactory, 2);
            comRef.instance.message = "I am third";
        }
    
    }

    So when click a button, we wil call 'onClick()' method, which will create a new component and insert it at the third place in the list.

  • 相关阅读:
    javascript有用小技巧—实现分栏显示
    在Apk应用程序内,查找某个Activity。
    NodeJS系列~第一个小例子,实现了request.querystring功能
    IOS开发(objective-c)~开篇有理
    爱上MVC3~布局页的继承与扩展
    我心中的核心组件(可插拔的AOP)~第五回 消息组件
    基础才是重中之重~方法override详解
    数据结构 练习 20-查找 算法
    cocos2d-x适配多分辨率
    VS2010中使用CL快速 生成DLL的方法
  • 原文地址:https://www.cnblogs.com/Answer1215/p/5901368.html
Copyright © 2011-2022 走看看