首页 > 其他分享 >angular如何引用其他组件

angular如何引用其他组件

时间:2022-09-05 13:34:43浏览次数:85  
标签:component module 引用 student 组件 import angular

原文链接:angular如何引用其他组件 – 每天进步一点点 (longkui.site)

 

 

 
0.背景

前面一篇文章,简单介绍过angular创建并引用组件。在实际情况开发中,情况会稍微复杂一些,今天这篇文章就简单介绍一下,稍微复杂一点组件引用。

场景:

在一个组件内,切换多个组件。

组件一:city(带module和routing)

组件二:student(只是component)

组件三:car(带moudule)

组件四:teacher(只是component)

这几个组件相互独立(即时是包含关系也没问题,只有路径引用对了即可),关于如何单独访问这样的组件,可以参考我写的这几篇文章:

angular中的路由详解(1)—默认路由的用法 – 每天进步一点点 (longkui.site)

angular中的路由详解(2)—访问路由的一些姿势以及页面传参 – 每天进步一点点 (longkui.site)

angular中的路由详解(3)—通过module和子路由来访问组件 – 每天进步一点点 (longkui.site)

下面开始介绍一下如何引用这些组件。

1.component直接引用component

创建teacher组件:

ng g c teacher

然后创建student组件

ng g c student

然后在teacher中调用。

import { Component, OnInit } from '@angular/core'; import {StudentComponent} from '../student/student.component' //导入student组件, @Component({ selector: 'app-teacher', templateUrl: './teacher.component.html', styleUrls: ['./teacher.component.css'] }) export class TeacherComponent implements OnInit {   constructor() { }   ngOnInit(): void { }   }

然后在teacher的html中加入下面这段代码即可。

<app-student></app-student>

注意:这个的名字是student.component.ts中selector的名字

@Component({
  selector: 'app-student',
  templateUrl: './student.component.html',
  styleUrls: ['./student.component.css']
})

效果:

2.带module的组件引用component

创建city

ng g m city --routing

在city目录下创建shandong和beijing两个组件:

ng g c beijing
ng g c shandong

我们在student组件中写一些内容,然后尝试在city/shandong这个组件调用。

带module的组件不能通过上面的方法直接引用。需要通过module这一层引用。

我们找到city这个module。加入student的代码:

import { NgModule } from '@angular/core'; import { CommonModule } from '@angular/common'; import { CityRoutingModule } from './city-routing.module'; import { ShandongComponent } from './shandong/shandong.component'; import { BeijingComponent } from './beijing/beijing.component'; import {StudentComponent} from '../student/student.component';// 这个地方引入, @NgModule({ declarations: [ShandongComponent, BeijingComponent,StudentComponent], //这个地方加入声明 imports: [ CommonModule, CityRoutingModule ] }) export class CityModule { }

可以看到,我们在这个地方加入了StudentComponent。然后在shandong组件的html中引用即可。

<app-student></app-student>

当然,如果你看了我前面的文章,你大概率会遇到下面的报错。

The Component 'StudentComponent' is declared by more than one NgModule.(-996007)

这个报错的意思的一个组件,只能被一个NgModule修饰,我们肯定是在其他地方的NgModule中加入了StudentComponent,所以才会报这个错,查看我们前面的文章,发现我们在app.module.ts中确实是加入了StudentComponent,所以才会报这个错,解决办法掉这个就行。

实际上,并不推荐上面的写法。

更推荐带module的写法。

3.带module的组件引用带module的组件

我们创建一个module。

ng g m car 
//或者带路由也行
ng g m car --routing

然后在car这个module下创建一个子组件

ng g c bmw

我们在city的module中引入car的module

同时,需要在car这个module中导出bmw组件。

import { NgModule } from '@angular/core'; import { CommonModule } from '@angular/common'; import { BmwComponent } from './bmw/bmw.component'; @NgModule({ declarations: [BmwComponent], imports: [ CommonModule ], exports:[BmwComponent] //导出BmwComponent,方便调用 }) export class CarModule { }

最后,在shandong这个组件中,就可以用bmw这组件了。

这种方法更推荐,后期可以通过hidden属性决定加载和现实哪些组件。做到动态加载组件的效果。

注意:实际开发中,发现如果你的开发习惯不好(比如我,很多子组件都叫list),然后引入的时候就悲剧了。

 

标签:component,module,引用,student,组件,import,angular
From: https://www.cnblogs.com/longkui-site/p/16657783.html

相关文章

  • vue项目里地图组件截图快照的实现方法---html2Canvas
    一、前言最近项目里要求要把当前地图截图展示在小窗里,之前没接触这种请求,于是我就百度了一下,发现有这么一块插件html2Canvas,它能够将dom元素转换成canvas进行截图保存,而......
  • Vue学习之--------深入理解Vuex之多组件共享数据(2022/9/4)
    在上篇文章的基础上:Vue学习之--------深入理解Vuex之getters、mapState、mapGetters1、在state中新增用户数组2、新增Person.vue组件提示:这里使用nanoid来生成新用户......
  • 组件基础(面试)
    组件组件是可复用的Vue实例,主要用于开发中具有相同特征不同数据的模块把它集成为一个组件供重复利用 组件基础(面试)1.全局组件:组件的属性不能用大写字母组件......
  • layDate 日期与时间组件
    1layDate下载https://dev.layuion.com/extend/search/layDate/2 layDate组件的季度、半年的选择1)首先引入laydate.js文件;<scripttype="text/javascript"src="${rc......
  • 第三章-Blazor 应用程序的组件和结构
    什么是Blazor组件?简单来说,Blazor中的每个razor文件都是一个组件。就是这么简单!Blazor中的razor文件包含标记,并且在@code部分中有代码。我们在MyFirstBlazor......
  • 第四章-高级组件
    使用模板化组件组件是Blazor的重用构建块。在C#中,泛型被大量用于重用;想想你在泛型中使用的所有集合,比如List<T>。如果Blazor有类似通用组件的东西会不会很酷?是......
  • 企业级项目组件化重构之路
    前言在之前的文章中,我们讲解了云音乐应用的基本库构建。今天,我们将进行一场组件化代码重构基于组件的库包系列文章如下:Android组件开发(一)——Maven私服构建Android......
  • 你应该使用受控组件来处理 React 中的密码吗?
    你应该使用受控组件来处理React中的密码吗?Photoby丹·纳尔逊on不飞溅我最近正在为一个客户开发一个项目,其中包括身份验证和登录页面。当我去设置用户名和密码的......
  • vue3 基础-组件间传值及校验
    本篇讲基于对页面组件化拆分后,组件之间如何进行数据传递,通常是父组件如何给子组件进行传值,子组件接收并进行数据校验后再使用.父子组件传值<!DOCTYPEhtml><html......
  • 修复:无法对未安装的组件执行反应状态更新。
    修复:无法对未安装的组件执行反应状态更新。在开发react.js应用程序时可能会遇到此错误:警告:无法对未安装的组件执行React状态更新。这是一个空操作,但它表明您的应用......