返回顶部
首页 > 资讯 > 精选 >angular9中如何实现组件动态加载
  • 440
分享到

angular9中如何实现组件动态加载

2023-06-14 06:06:04 440人浏览 薄情痞子
摘要

这篇文章将为大家详细讲解有关angular9中如何实现组件动态加载,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。指令的创建在添加组件之前,先要定义一个锚点来告诉 Angular 要把组件插入到什么地方。

这篇文章将为大家详细讲解有关angular9中如何实现组件动态加载,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

指令的创建

在添加组件之前,先要定义一个锚点来告诉 Angular 要把组件插入到什么地方。
在src/dynamic-banner/ad.directive.ts下

import { Directive, ViewContainerRef } from '@angular/core';@Directive({  selector: '[ad-host]',})export class AdDirective {  constructor(public viewContainerRef: ViewContainerRef) { }}

AdDirective 注入了 ViewContainerRef 来获取对容器视图的访问权,这个容器就是那些动态加入的组件的宿主。
@Directive 装饰器中,要注意选择器的名称:ad-host,它就是你将应用到元素上的指令。

相关推荐:《angular教程

动态组件的核心代码

动态组件加载的html

src/dynamic-banner/ad-banner.component.html

<div class="ad-banner-example">  <h4>Advertisements</h4>  <ng-template ad-host></ng-template></div>

动态组件的ts

src/dynamic-banner/ad-banner.component.ts

import { Component, Input, OnInit, ViewChild, ComponentFactoryResolver, OnDestroy, SimpleChanges } from '@angular/core';import { AdDirective } from './ad.directive';import { AdItem }      from './ad-item';import { AdComponent } from './ad.component';import { componentMap } from './component/utils';@Component({  selector: 'app-ad-banner',  templateUrl: './ad-banner.component.html',  // styleUrls: ['./ad-banner.component.CSS']})export class AdBannerComponent implements OnInit {  @Input() type: string = 'ad1' // 传入的key,确定加载那个组件  @Input() data: any = {} // 传入组件的数据  @ViewChild(AdDirective, {static: true}) adHost: AdDirective; // 动态组件的指令  constructor(private componentFactoryResolver: ComponentFactoryResolver) { }  nGonInit() {    this.loadComponent();  }  ngOnChanges(changes: SimpleChanges): void {    if (changes['type']) this.loadComponent()  }  loadComponent() {    // adItem 要加载的组件类,以及绑定到该组件上的任意数据    const adItem = new AdItem(componentMap[this.type], this.data)     const componentFactory = this.componentFactoryResolver.resolveComponentFactory(adItem.component);    const viewContainerRef = this.adHost.viewContainerRef;    viewContainerRef.clear();    const componentRef = viewContainerRef.createComponent(componentFactory);    (<AdComponent>componentRef.instance).data = adItem.data;  }}

ad-item.ts

src/dynamic-banner/ad-item.ts

import { Type } from '@angular/core';export class AdItem {  constructor(public component: Type<any>, public data: any) {}}

ad.component.ts

src/dynamic-banner/ad.component.ts

import { Type } from '@angular/core';export interface AdComponent {  data: any;}

组件统一注册

src/dynamic-banner/share.module.ts

import { NgModule } from '@angular/core';import { CommonModule } from '@angular/common';import { componets } from './component/utils';import { AdDirective } from './ad.directive';import { AdBannerComponent } from './ad-banner.component';@NgModule({  imports: [    CommonModule  ],  exports:[    [...componets],    AdDirective,    AdBannerComponent,  ],  declarations: [    [...componets],    AdDirective,    AdBannerComponent,  ],  entryComponents: [    [...componets]  ]})export class ShareModule { }

组件的映射

src/dynamic-banner/component/utils.ts

import { HeroProfileComponent } from "./hero-profile.component";import { HeroJobAdComponent } from './hero-job-ad.component';const componentMap = {    ad1: HeroProfileComponent,    ad2: HeroJobAdComponent}const componets = [    HeroProfileComponent,    HeroJobAdComponent]export {componets, componentMap}

效果图

angular9中如何实现组件动态加载

关于“angular9中如何实现组件动态加载”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

--结束END--

本文标题: angular9中如何实现组件动态加载

本文链接: https://lsjlt.com/news/268619.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • angular9中如何实现组件动态加载
    这篇文章将为大家详细讲解有关angular9中如何实现组件动态加载,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。指令的创建在添加组件之前,先要定义一个锚点来告诉 Angular 要把组件插入到什么地方。 ...
    99+
    2023-06-14
  • Angular.js怎么实现动态加载组件
    小编给大家分享一下Angular.js怎么实现动态加载组件,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!前言有时候需要根据URL...
    99+
    2024-04-02
  • vue如何动态加载组件详解
    目录使用场景:需要动态导入组件的页面核心组件的代码:使用场景:总结使用场景: 项目中需要我们根据不同的业务需求呈现不同的业务场景,如果业务类型简单还好,直接全部引入判断即可,但随着我...
    99+
    2022-11-13
    vue 组件动态加载 vuejs动态加载组件 vue 加载组件
  • vue3.0+vite2实现动态异步组件懒加载
    目录创建一个vite项目 创建组件 创建一个vite项目 性能决定成败;vite确实快; cmd 命令行(默认你已经安装了node & npm),执行npm init @v...
    99+
    2024-04-02
  • bootstrap如何实现table插件动态加载表头
    这篇文章主要为大家展示了“bootstrap如何实现table插件动态加载表头”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“bootstrap如何实现table...
    99+
    2024-04-02
  • bootstrap中如何实现动态加载下拉框
    小编给大家分享一下bootstrap中如何实现动态加载下拉框,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!实例如下所示://引入...
    99+
    2024-04-02
  • Ajax如何实现动态加载数据
    这篇文章给大家分享的是有关Ajax如何实现动态加载数据的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。这个随笔实现了一个Ajax动态加载的例子。使用.net 的MVC框架实现。这个例子重点在前后台交互,其它略写。开...
    99+
    2023-06-08
  • VUE路由动态加载如何实现
    这篇文章主要讲解了“VUE路由动态加载如何实现”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“VUE路由动态加载如何实现”吧!首先新建vue工程,一般我们不会特殊处理路由,但当项目页面越来越多...
    99+
    2023-07-04
  • vue3动态加载组件以及动态引入组件详解
    目录1.问题2.分析3.最后总结1.问题 在做一个用vite构建的vue3项目时,动态拉取导入.vue页面,然后控制台一直有以下提示,页面也无法渲染出来。 2.分析 根据上面的报错...
    99+
    2023-03-23
    vue 动态加载组件 vue加载组件 vue3动态加载组件
  • 如何动态加载JavaScript文件
    这篇文章主要介绍如何动态加载JavaScript文件,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、使用document.write/writeln()方式该种方式可以实现js文件...
    99+
    2024-04-02
  • vue2组件如何实现懒加载
    这篇文章给大家分享的是有关vue2组件如何实现懒加载的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一、 什么是懒加载懒加载也叫延迟加载,即在需要的时候进行加载,随用随载。二、为什...
    99+
    2024-04-02
  • 权限管理模块中动态加载Vue组件怎么实现
    本篇内容介绍了“权限管理模块中动态加载Vue组件怎么实现”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!登录状态保存当用户登录成功之后,需要将...
    99+
    2023-06-19
  • vue3动态加载组件及动态引入组件怎么使用
    本篇内容介绍了“vue3动态加载组件及动态引入组件怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1.问题在做一个用vite构建的vu...
    99+
    2023-07-05
  • Vue如何实现异步动态加载块
    本篇内容介绍了“Vue如何实现异步动态加载块”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!首先定义组件为异步加载define(['j...
    99+
    2023-07-04
  • vue3.0+vite2实现动态异步组件懒加载的方法
    这篇文章主要介绍“vue3.0+vite2实现动态异步组件懒加载的方法”,在日常操作中,相信很多人在vue3.0+vite2实现动态异步组件懒加载的方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”vue3....
    99+
    2023-06-20
  • Vue加载中动画组件如何使用
    这篇文章主要介绍“Vue加载中动画组件如何使用”,在日常操作中,相信很多人在Vue加载中动画组件如何使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Vue加载中动画组件如何使用”的疑惑有所帮助!接下来,请跟...
    99+
    2023-06-29
  • java实现动态编译并动态加载
    在D盘test目录下有个java文件:AlTest.java public class AlTest { public String sayHello(){ System...
    99+
    2024-04-02
  • jQuery如何编辑实现动态加载页面
    这篇文章主要介绍jQuery如何编辑实现动态加载页面,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!编辑实现动态加载页面function editFun(){ var&nbs...
    99+
    2024-04-02
  • JavaScript如何实现动态加载删除表格
    这篇文章将为大家详细讲解有关JavaScript如何实现动态加载删除表格,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。具体内容如下代码:<!DOCTYPE html><html...
    99+
    2023-06-14
  • vb.net如何实现动态控件数组
    这篇文章主要介绍vb.net如何实现动态控件数组,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!VB.NET控件数组问题1、在form的头部定义一个公共的ArrayList类型的变量Dim m_items As New...
    99+
    2023-06-17
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作