angular中的常用指令、如何自定义指令

环境准备

使用ng n ngPro3 --standalone=false命令创建一个angular项目。
项目创建完成以后,文件布局如下:
在这里插入图片描述

项目自动生成的package.json文件的内容如下:

{
  "name": "ng-pro3",
  "version": "0.0.0",
  "scripts": {
    "ng": "ng",
    "start": "ng serve",
    "build": "ng build",
    "watch": "ng build --watch --configuration development",
    "test": "ng test"
  },
  "private": true,
  "dependencies": {
    "@angular/animations": "^18.1.0",
    "@angular/common": "^18.1.0",
    "@angular/compiler": "^18.1.0",
    "@angular/core": "^18.1.0",
    "@angular/forms": "^18.1.0",
    "@angular/platform-browser": "^18.1.0",
    "@angular/platform-browser-dynamic": "^18.1.0",
    "@angular/router": "^18.1.0",
    "rxjs": "~7.8.0",
    "tslib": "^2.3.0",
    "zone.js": "~0.14.3"
  },
  "devDependencies": {
    "@angular-devkit/build-angular": "^18.1.4",
    "@angular/cli": "^18.1.4",
    "@angular/compiler-cli": "^18.1.0",
    "@types/jasmine": "~5.1.0",
    "jasmine-core": "~5.1.0",
    "karma": "~6.4.0",
    "karma-chrome-launcher": "~3.2.0",
    "karma-coverage": "~2.2.0",
    "karma-jasmine": "~5.1.0",
    "karma-jasmine-html-reporter": "~2.1.0",
    "typescript": "~5.5.2"
  }
}

然后到项目目录下,使用ng s -o或者npm run start命令启动项目:
在这里插入图片描述

下面验证下,将根组件app.component.html文件内容改为如下:
在这里插入图片描述

在这里插入图片描述

创建一个新的组件、并显示到html中

在集成终端中运行命令ng g c myc01,自动创建一个新的组件:
在这里插入图片描述

创建完成后:
在这里插入图片描述

在这里插入图片描述

将组件显示到html中:
在这里插入图片描述

在这里插入图片描述

最基本的if条件判断

在这里插入图片描述

开始显示:
在这里插入图片描述

点击按钮:
在这里插入图片描述

在这里插入图片描述

if-else写法

输入ngif,从提示选中ng-if-else这一项,然后回车:
在这里插入图片描述

自动生成了代码块:
在这里插入图片描述

将具体判断条件加上:
在这里插入图片描述

展示:
在这里插入图片描述

点击更改成绩的按钮:
在这里插入图片描述

switch语句

为了演示,在集成终端中执行ng g c myc02命令,生成另外一个组件:
在这里插入图片描述

在这里插入图片描述

在根组件app.component.html中引用app-myc02组件:
在这里插入图片描述

输入ngsw,有自动提示:
在这里插入图片描述

回车:
在这里插入图片描述

修改后:
在这里插入图片描述

初始显示:
在这里插入图片描述

下面是随着点击按钮的变化:
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

for循环指令

在集成终端中输入命令ng g c myc03创建一个新的组件:
在这里插入图片描述

在这里插入图片描述

到根组件中引用新创建的组件:
在这里插入图片描述

在这里插入图片描述

输入ngfor,从提示中选择nf-for,然后回车:
在这里插入图片描述

在这里插入图片描述

修改后:
在这里插入图片描述

展示效果:
在这里插入图片描述

带有序号的for循环

在这里插入图片描述

回车:
在这里插入图片描述

修改后:
在这里插入图片描述

展示效果:
在这里插入图片描述

自定义指令的制作

执行命令ng g c myc04创建一个新的组件:
在这里插入图片描述

在这里插入图片描述

在根组件中显示新生成的组件:
在这里插入图片描述

在这里插入图片描述

期望自定义appFoucus指令,实现自动聚焦:
在这里插入图片描述

自定义指令的语法:ng generate directive 指令名
简化写法:ng g d 指令名

假设自定义appFocus指令,自动获取焦点。

在集成终端中执行命令ng g d focus,注意app不用带,是系统自动加上去的:
在这里插入图片描述

在这里插入图片描述

自动生成的focus.directive.ts文件中的内容:
在这里插入图片描述

修改后:
在这里插入图片描述

刷新页面,控制台可以看到打印的对象(如果看不到,就重启服务器):

在这里插入图片描述

将对象展开:
在这里插入图片描述

将鼠标放到input上,上面的输入框会高亮:
在这里插入图片描述

修改自定义指令文件,实现自动获取焦点:
在这里插入图片描述

页面展示,第二个输入框自动获取了焦点:
在这里插入图片描述

现在想再自定义一个指令appUpper,自动输入框中的文字变为大写:
在这里插入图片描述

在集成终端中执行命令ng g d upper,来自动生成一个自定义指令:
在这里插入图片描述

自动生成的自定义指令的文件的内容:
在这里插入图片描述

加上变大写的逻辑:
在这里插入图片描述

现在查看效果,第三个输入框的的字母自动转换为大写了:
在这里插入图片描述

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Angular,如果您有多个自定义指令文件,并且希望将它们全部一起导入到一个模块,可以使用`NgModule`的`declarations`数组来声明这些指令,并将它们一起添加到该数组。以下是一个示例: 1. 首先,确保您的自定义指令文件已经创建并位于正确的位置。 2. 在您希望将这些指令一起导入的模块,导入这些指令文件: ```typescript import { NgModule } from '@angular/core'; import { CommonModule } from '@angular/common'; // 导入自定义指令 import { CustomDirective1 } from './custom-directive1.directive'; import { CustomDirective2 } from './custom-directive2.directive'; import { CustomDirective3 } from './custom-directive3.directive'; @NgModule({ declarations: [ CustomDirective1, CustomDirective2, CustomDirective3 ], imports: [ CommonModule ] }) export class SharedModule { } ``` 3. 将`SharedModule`添加到需要使用这些自定义指令的模块的`imports`数组: ```typescript import { NgModule } from '@angular/core'; import { CommonModule } from '@angular/common'; // 导入SharedModule import { SharedModule } from './shared/shared.module'; @NgModule({ declarations: [ // 声明组件 ], imports: [ CommonModule, SharedModule // 将SharedModule添加到imports数组 ] }) export class AppModule { } ``` 现在,您可以在任何需要使用这些自定义指令的组件直接使用它们,而无需单独导入它们。例如,在组件的模板,您可以直接使用这些指令: ```html <div customDirective1></div> <div customDirective2></div> <div customDirective3></div> ``` 希望这可以帮助到您!如果您还有其他问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值