ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
## ViewContainerRef 表示可以附加一个或多个视图的容器。 容器可以包含两种视图。通过`createComponent`实例化组件创建的宿主视图(Host View)和通过`createEmbeddedView`实例化嵌入模板创建的嵌入视图。 在包含视图内的视图容器的位置由锚点元素指定。每个视图容器只能有一个锚点元素,每个锚点元素只能有一个视图容器。 附加到此容器的视图的根元素将成为渲染视图中锚点元素的兄弟。 要访问元素的`ViewContainerRef`,您可以放置一个在元素上使用`ViewContainerRef`注入的指令,或者通过`ViewChild`查询获取它。 ### 类定义 ```typescript class ViewContainerRef { element : ElementRef injector : Injector parentInjector : Injector clear() : void get(index: number) : ViewRef length : number createEmbeddedView(templateRef: TemplateRef<C>, context?: C, index?: number) : EmbeddedViewRef<C> createComponent(componentFactory: ComponentFactory<C>, index?: number, injector?: Injector, projectableNodes?: any[][]) : ComponentRef<C> insert(viewRef: ViewRef, index?: number) : ViewRef move(viewRef: ViewRef, currentIndex: number) : ViewRef indexOf(viewRef: ViewRef) : number remove(index?: number) : void detach(index?: number) : ViewRef } ``` ### 属性 - element: `ElementRef` 描点元素,用于指定此容器在包含视图中的位置。 - injector : `Injector` - parentInjector: `Injector` - clear() : `void` 销毁容器中的所有视图 - get(index: `number`) : `ViewRef` 返回此容器中指定索引的视图所对应的`ViewRef`。 - length: `number` 返回当前附加到此容器的视图数。 - createEmbeddedView(templateRef: `TemplateRef<C>`, context?: C, index?: `number`) : `EmbeddedViewRef<C>` 基于`templateRef`实例化嵌入视图并将其插入到当前容器的指定索引处。 如果未指定`index`,则新视图将作为为容器的最后一个视图插入。 返回新创建视图的`ViewRef`对象。 - createComponent(componentFactory: `ComponentFactory<C>`, index?: `number`, injector?: `Injector`, projectableNodes?: any[][] : `ComponentRef<C>`) 实例化单个组件并将其宿主视图(Host View)插入此容器指定的索引处。 组件使用`ComponentFactory`实例化,并通过`ComponentFactoryResolver`获取。 如果未指定`index`,则新视图将作为为容器的最后一个视图插入。 可以选择指定`Injector`作用于当前组件的父节点。 返回新实例化组件的Host View的`ComponentRef`。 - insert(viewRef: `ViewRef`, index?: `number`) : `ViewRef` 在容器指定索引处插入一个被`ViewRef`标识的视图。 如果未指定`index`,则新视图将作为为容器的最后一个视图插入。 - move(viewRef: `ViewRef`, currentIndex: `number`) : `ViewRef` 将`ViewRef`标识的视图移动到容器指定`index`处。 - indexOf(viewRef: `ViewRef`) : `number` 返回在当前容器中通过ViewRef指定的视图的索引,如果此容器不包含视图,则返回-1。 - remove(index?: `number`) : `void` 销毁指定索引处附加到此容器的视图。 如果未指定index,容器中的最后一个视图将被删除。 - detach(index?: `number`): `ViewRef` 与`insert`一起使用以在当前容器中移动视图。 如果省略索引参数,则会删除最后一个ViewRef。