angular入门教程

简介: angular入门教程

安装

 
# 前提安装了 node 和 npm
 
# 各种版本列表,安装过程可能node 和npm 版本问题,降低一下版本就可以
https://github.com/angular/angular-cli/tags?after=v10.1.0-next.6
卸载: npm uninstall -g angular-cli
清空缓存后继续执行直至成功:npm cache verify
 
指定安装版本:npm install -g @angular/cli@8.0.3
 
安装最新版本:npm install -g @angular/cli
 
# 不能用快捷键,随便找个D盘或者E目录
E:\project\angular>ng version
 
     _                      _                 ____ _     ___
    / \   _ __   __ _ _   _| | __ _ _ __     / ___| |   |_ _|
   / △ \ | '_ \ / _` | | | | |/ _` | '__|   | |   | |    | |
  / ___ \| | | | (_| | |_| | | (_| | |      | |___| |___ | |
 /_/   \_\_| |_|\__, |\__,_|_|\__,_|_|       \____|_____|___|
                |___/
 
 
Angular CLI: 9.1.12
Node: 15.5.0
OS: win32 ia32
 
Angular:
...
Ivy Workspace:
 
Package                      Version
------------------------------------------------------
@angular-devkit/architect    0.901.12
@angular-devkit/core         9.1.12
@angular-devkit/schematics   9.1.12
@schematics/angular          9.1.12
@schematics/update           0.901.12
rxjs                         6.5.4

执行 nv version ,ng 不是内部或外部命令

Angular运行时报错:ng 不是内部或外部命令
一、运行命令ng -v时报错,添加环境变量
此电脑-属性-高级系统设置-环境变量-Path
添加:node_global

运行命令ng -serve时报错,添加环境变量

此电脑-属性-高级系统设置-环境变量-Path

添加:node-cache

 

# 创建项目
ng new 项目名称
创建完执行:npm install
# 只是声明了一个普通的类
export class ServerComponent{
 
}
# @Component 表示是angular的组件,使用组件前必须先引入
import { Component } from '@angular/core';
 
@Component
export class ServerComponent{
 
}
 
# 对象选择器,selector 选择器可以自定义,templateUrl 模板文件
@Component({
  selector: 'server-root',
  templateUrl: 'server.component.html',
})
 
# 在app.module.ts文件下声明组件, import 的下组件,ServerComponent 并注册
import {ServerComponent } from './server/server.component'
 
@NgModule({
  declarations: [
    AppComponent,
    ServerComponent
  ],
  imports: [
    BrowserModule,
    AppRoutingModule
  ],
  providers: [],
  bootstrap: [AppComponent]
})
 
# 调用组件: 直接在xx.xx.html中 <server-root></server-root> 写入选择器的名字就可以。
# 比如我想在 app.component.html 中使用,直接在页面中:<server-root></server-root> 写这个选着器的名字就可以。
selector: 'server-root'
 
# 使用CLI组件创建 组件方便快捷,不用手动创建了。命令:ng g c service
# service.component.spec.ts 这是一个测试文件。
F:\web-project\ang\src\app>ng g c service
CREATE src/app/service/service.component.html (22 bytes)
CREATE src/app/service/service.component.spec.ts (633 bytes)
CREATE src/app/service/service.component.ts (279 bytes)
CREATE src/app/service/service.component.css (0 bytes)
UPDATE src/app/app.module.ts (562 bytes)
 
F:\web-project\ang\src\app>
 
# 使用CLI创建的已经帮我们注册好了,不用手动引入和注册了。
import { ServiceComponent } from './service/service.component'
 
@NgModule({
  declarations: [
    AppComponent,
    ServerComponent,
    ServiceComponent
  ],
# 属性,文本绑定
export class ServerComponent{
  title = '这是一个标题'
 
}
 
<p>{{title}}</p>
 
# 条件渲染
# 定义flag 为boolean类型
export class ServerComponent{
  title = '这是一个标题';
  public flag:boolean  = true;
}
<h1 *ngIf = 'flag'>是否展示</h1>
 
# 列表渲染
export class ServerComponent{
  list = ['张三','李四','王五'];
}
 
<ul>
    <li *ngFor = "let item of list">
      {{item}}
    </li>
</ul>
 
# 表单双向绑定,安装和导入一下就可以使用了
cnpm i @angular/forms
 
import { FormsModule } from '@angular/forms';
 
  imports: [
    BrowserModule,
    AppRoutingModule,
    FormsModule
  ],
  providers: [],
  bootstrap: [AppComponent]
})
 
# 表单使用,页面就会有一个默认值
msg = '这是一个默认值';
<input type="text" [value]="msg"  />
 
# 动态输入
clickMessage = '';
 
onKeyFun(event:any) {
    this.clickMessage = event.target.value ;
}
<div>
  <input type="text"  (keyup)="onKeyFun($event)">
  <input type="text" [value]="clickMessage"  />
</div>
 
# 使用 ngModel 实现动态输入
<div>
  <input type="text"  [(ngModel)]="clickMessage">
  <input type="text" [value]="clickMessage"  />
</div>
 
# 配置路由
# 正这个文件中配置
app-routing.module.ts
 
import { AppComponent } from './app.component';
import {ServerComponent } from './server/server.component';
import { ServiceComponent } from './service/service.component';
import { ListComponent } from './list/list.component';
import { SubformComponent } from './subform/subform.component';
 
const routes: Routes = [
  {path: 'sub/form',component: SubformComponent},
  {path: 'sub/ser',component: ServerComponent},
  ];
# 动态的挂在在根组件下面
<h1>我是根组件:下面会显示不同路由的组件</h1>
<router-outlet></router-outlet>
 
# 页面点击动态跳转
<h1>我是根组件</h1>
<ul><a routerLink='sub/form'>首页</a></ul>
<ul><a routerLink='sub/ser'>server</a></ul>
<router-outlet></router-outlet>
 
 
# 使用模板
@Component({
  selector: 'server-root',
  templateUrl: 'server.component.html',
})
页面中:<server-root></server-root>
 
# 匹配不到路由的时候跳转的路径
const routes: Routes = [
  {path: 'sub/form',component: SubformComponent},
  {path: 'sub/ser',component: ServerComponent},
  //匹配不到的时候跳转到 sub/ser 这个路径
  {path: '**',redirectTo: 'sub/ser'},
  ];
 
# 点中进行 Active 就是红色的
<h1>我是根组件</h1>
 
<ul><a routerLink='sub/form' routerLinkActive="active" >首页</a></ul>
<ul><a routerLink='sub/ser' routerLinkActive="active">server</a></ul>
<router-outlet></router-outlet>
.active{
  color: red
}
 
# 父子路由
const routes: Routes = [
  {path: 'sub/form',component: SubformComponent},
  {path: 'sub/ser',component: ServerComponent},
 
  {path: 'news/list',component: NewsComponent,
    children:[
       {path: 'content',component: NewscontentComponent},
    ]
  },
 
  ];
 // 一定要父组件加 : <router-outlet></router-outlet> 就实现了组件的引用
 <h2> 新闻列表</h2>
 <div>
   <ul>
     <li *ngFor = "let item of newsId">
       <a routerLink='content'>跳转新闻详情:{{item}} </a>
     </li>
   </ul>
 </div>
 <router-outlet></router-outlet>


相关文章
|
8月前
|
设计模式 JSON 监控
angular快速入门指南
angular快速入门指南
97 0
|
8月前
|
前端开发 JavaScript
Angular框架入门指南
Angular框架入门指南
154 0
|
JavaScript 前端开发 容器
|
监控 JavaScript
angular之入门基础
angular之入门基础
112 0
angular之入门基础
|
缓存 API 数据库
初露锋芒 Angular6 入门项目 - 4 上
初露锋芒 Angular6 入门项目 - 4 上
129 0
|
JavaScript 网络架构
初露锋芒 Angular6 入门项目 - 1
初露锋芒 Angular6 入门项目 - 1
191 0
初露锋芒 Angular6 入门项目 - 4 下
初露锋芒 Angular6 入门项目 - 4 下
87 0
|
JavaScript
初露锋芒 Angular6 入门项目 - 2
初露锋芒 Angular6 入门项目 - 2
198 0