Angular

作者: 一只小丫丫 | 来源:发表于2020-04-28 20:06 被阅读0次

    angular

    概念

    • 构建前端界面的mvvm框架
    • AngularjS 1系列
    • Angular 2-9

    安装

    安装脚手架

    npm install -g @angular/cli

    脚手架常用命令

    ng new 项目名 //创建一个新的项目
    ng serve //启动项目
    ng g c 组件名称 //创建一个组件
    ng g s 服务名 //创建一个服务

    angular 启动过程

    • main.ts 引导启动根模块
    • app.module.ts 启动根组件
      包含 组件,服务,指令,路由
    • app.component.ts 根组件
    • index.html
      根组件会替换掉该<app-root>指令

    angular 核心概念

    组件

    分割复杂业务逻辑
    重用功能

    模块

    阻止 组件 服务 路由 等

    模板

    html模板

    元数据(class装饰器)

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

    如果来组织处理组件

    数据绑定 {{ }}

    指令

    业务逻辑与模板链接在一起的命令

    服务

    为多个组件提供 数据 函数xxx等服务

    文本绑定

    <p>Message: {{ msg }}</p>
    <p [innerHTML]="msg"></p>
    

    属性绑定

    p>
      <img [src]="url" alt="">
    </p>
    <p>
      <img bind-src="url" alt="">
    </p>
    <p>
      <img src="{{url}}" alt="">
    </p>
    

    列表渲染

    <ul>
      <li 
      *ngFor="let item of list  ;let i=index">
        {{i+1}} - {{item}}
      </li>
    </ul>
    

    条件渲染

    <div *ngIf="flag else blockif">我喜欢if</div>
    <ng-template #blockif>我爱else</ng-template>
    

    事件处理

    <button (click)="showMsg($event)">响应函数</button> |
    <button (click)="flag=!flag">变身</button> |
    <button (click)="msg='神奇文本'">神奇文本</button> |
    <button (click)="msg=$event.target.innerHTML">事件参数</button> 
    

    表单输入绑定

    文本

    配置app.module.ts

    import { BrowserModule } from '@angular/platform-browser';
    import { NgModule } from '@angular/core';
    
    import { AppRoutingModule } from './app-routing.module';
    import { AppComponent } from './app.component';
    import {FormsModule} from '@angular/forms'
    
    @NgModule({
      declarations: [
        AppComponent
      ],
      imports: [
        BrowserModule,
        AppRoutingModule,
        FormsModule,
      ],
      providers: [],
      bootstrap: [AppComponent]
    })
    export class AppModule { }
    
    
    <p>手动双向绑定:
      <input type="text" [value]="msg" (input)="msg=$event.target.innerHTML">
    </p>
    <p>FormsModule 自动双向绑定:
      <input type="text" [(ngModel)]="msg">
    </p>
    
    复选框
    <p><input type="checkbox" [(ngModel)]="sel">同意并阅读条款</p>
    <p><button [disabled]="!sel">登录</button></p>
    
    下拉列表
    <select [(ngModel)]="hobby">
      <option value="吃饭">吃饭</option>
      <option value="睡觉">睡觉</option>
      <option value="打豆豆">打豆豆</option>
    </select>
    <p>选中的爱好:{{ hobby }}</p>
    

    Class 与 Style 绑定

    class
    <p [class]="myclass">夏天来了!!!</p>
    <p [ngClass]="{'active':!flag}">我相信明天会更好</p>
    <p [class.active]="flag">我相信明天会更好</p>
    
    style
    <p [style.color]="flag?'orangered':'red'">样式绑定</p>
    <p [ngStyle]="mystyle">吃得苦中苦</p>
    <p [ngStyle]="{'color':'red','font-size':'24px'}">方为人上人</p>
    

    默认管道-过滤器

    <p>时间:{{d}}</p>
    <p>时间:{{d|date:'yy-MM-dd HH:mm:ss'}}</p>
    <p>json: {{obj|json}}</p>
    <p>数字:{{3.1415926 | number:'1.2-4'}}</p>
    <p>截取管道 | slice</p>
    <ul>
      <li 
      *ngFor="let item of list|slice:2:4;let i=index">
        {{i+1}} - {{item}}
      </li>
    </ul>
    

    相关文章

      网友评论

          本文标题:Angular

          本文链接:https://www.haomeiwen.com/subject/emibwhtx.html