angular7快速上手

項目初始化

安裝 Angular CLI (可選)

$ npm install -g @angular/cli

檢測 Angular CLI 是否安裝成功

$ ng --version

創(chuàng)建新的項目

$ ng new project-name

啟動本地服務(wù)器

$ cd project-name
$ ng serve
# 或者
$ ng serve --deploy-url / --host 0.0.0.0 --disable-host-check --open --port 3333 --proxy-config proxy.conf.json --ssl --live-reload false
  • 新建模塊
    到指定目錄下床佳,執(zhí)行語句
ng generate component 模塊名稱
  • 新建服務(wù)
ng g service 服務(wù)名稱

angular7缺陷

  1. 不支持hm
    angular8現(xiàn)在默認(rèn)支持hot page reload滋早,即頁面刷新。
    但是不支持模塊更新砌们。
    即便按照官網(wǎng)配置了大堆使其支持模塊更新杆麸,那也是不保持當(dāng)前state的模塊更新。

  2. 不支持本地https開發(fā)
    即便通過配置使其支持了本地https啟動浪感,每一次代碼改動昔头,會多次觸發(fā)hot page reload。
    開發(fā)體驗賊差影兽。
    這時不得不關(guān)掉hot page reload揭斧,手動刷新頁面。
    啟動命令參考
    ng serve --deploy-url / --host 0.0.0.0 --disable-host-check --open --port 3333 --proxy-config proxy.conf.json --ssl --live-reload false

  3. 沒有一個集中管理頁面state的庫
    非父子組件之間的通信峻堰,得靠各自組件的service讹开。

  4. 打包后的文件,無法和開發(fā)中的文件進(jìn)行映射
    無法代理線上的文件到開發(fā)中的本地文件

模板中復(fù)用html

<ng-template [ngTemplateOutlet]="MsgRef"></ng-template>
<ng-template [ngTemplateOutlet]="MsgRef"></ng-template>
<ng-template #MsgRef>被復(fù)用的html塊</ng-template>

循環(huán)創(chuàng)建html代碼塊

<ng-container *ngFor="let reasonItem of reasonObj;let ii = index;">
  <div class="recommend-result-box"  (click)="confrimReasonBox(ii)">
    {{reasonItem.name}}
  </div>
</ng-container>

html的class切換

<div [ngClass]="{'trueShowClass':true}"></div>

proxy.conf.js較佳實踐

  1. proxy.confg.json改為proxy.config.js
    更好支持js語法捐名,注釋旦万。

這時ng項目啟動命令為

ng serve --deploy-url / --host 0.0.0.0 --disable-host-check --open --port 3330 --proxy-config proxy.conf.js --ssl --live-reload false

注意proxy.conf.js

  1. 具體接口匹配需放在通用接口匹配之前
    防止無法匹配到所需接口。
  2. pathRewrite屬性使用函數(shù)形式
  3. proxy.conf.js其實是webpack的proxy配置桐筏,配置方式一致纸型。

本地項目代碼啟動,配置線上的cookie方式

module.exports = {
     "/api/jiuding": {
     "target": "https://gztest.yuntrial.com",
     "secure": false,
     "changeOrigin": true,
     "headers":{
        "Cookie":"xxxxx"
     }
   }
}

DOM獲取的例子

import { Component, ElementRef, ViewChild, AfterViewInit, Renderer } from '@angular/core';

@Component({
  selector: 'my-app',
  template: `
    <h1>Welcome to Angular World</h1>
    <div #greet>Hello {{ name }}</div>
  `,
})
export class AppComponent {
  name: string = 'Semlinker';

  @ViewChild('greet') greetDiv: ElementRef;

  constructor(private elementRef: ElementRef, private renderer: Renderer) { }

  ngAfterViewInit() {
    // 這個就是<div #greet>的dom對象
    this.greetDiv.nativeElement
  }
}

for循環(huán)的dom引用獲取

@ViewChildren('evidenceListArr') evidenceListArr: any;

// 獲取對應(yīng)的dom引用梅忌,idx是數(shù)組中對應(yīng)的序號
this.evidenceListArr._results[idx]

組件通信

使用service和rxjs狰腌,滿足各種場景。

import { BehaviorSubject } from 'rxjs';
...
public messageSource = new BehaviorSubject<string>('Start');
changemessage(message: string): void {
  this.messageSource.next(message);
}
changeInfo() {
  this.communication.changemessage('Message from child 1.');
}
ngOnInit() {
  this.communication.messageSource.subscribe(Message => {
    window.alert(Message);
    this.info = Message;
  });
}

路由子模塊創(chuàng)建

./src/app目錄下新建一個名叫pages模塊命令是ng generate module pages --routing牧氮。
./src/app/pages目錄下新建組件ng generate component knowledge-index琼腔。
修改./src/app/pages/pages-routing.module.ts文件

import {KnowledgeIndexComponent} from './knowledge-index/knowledge-index.component';

const routes: Routes = [{
  path: '',
  children:[
    {
      path: 'knowledge-index',
      component: KnowledgeIndexComponent
    },
  ]
}];

修改./src/app-routing.module.ts文件

const routes: Routes = [
  {path: 'case',loadChildren: './pages/pages.module#PagesModule'},
  {path: '', redirectTo: '/case', pathMatch: 'full'},
];

訪問鏈接[http://localhost:4200/case/knowledge-index](http://localhost:4200/case/knowledge-index)即可。

ng-form的響應(yīng)式表單的數(shù)組類項綁定

angular官網(wǎng)例子對數(shù)組類綁定不夠完整踱葛,很多人都會搞不清楚寫法丹莲。
下面的例子比較完整。

<form nz-form [formGroup]="advancedOption" class="ant-advanced-search-form">
    <div formArrayName="textSearchs"  *ngFor="let textSearch of textSearchs.controls; let i=index">
      <div [formGroup]="textSearch">
        <nz-form-item nzFlex>
          <nz-form-label>文本檢索</nz-form-label>
          <nz-form-control>
            <nz-select [formControlName]="'type'" style="width: 100px;" nzPlaceHolder="">
              <nz-option nzValue="全文內(nèi)容" nzLabel="全文內(nèi)容"></nz-option>
              <nz-option nzValue="本院認(rèn)為" nzLabel="本院認(rèn)為"></nz-option>
              <nz-option nzValue="本院查明" nzLabel="本院查明"></nz-option>
              <nz-option nzValue="裁判結(jié)果" nzLabel="裁判結(jié)果"></nz-option>
              <nz-option nzValue="原告訴稱" nzLabel="原告訴稱"></nz-option>
              <nz-option nzValue="被告辯稱" nzLabel="被告辯稱"></nz-option>
              <nz-option nzValue="審理經(jīng)過" nzLabel="審理經(jīng)過"></nz-option>
            </nz-select>
          </nz-form-control>
          <nz-form-control>
            <input
              nz-input
              placeholder=""
              [formControlName]="'text'"
            />
          </nz-form-control>
        </nz-form-item>
      </div>
    </div>
</form>
import { FormBuilder, FormArray, Validators } from '@angular/forms';

export class XxxComponent {
  advancedOption = this.fb.group({
    textSearchs: this.fb.array([
      this.fb.group(
        {
          type: ['全文內(nèi)容'],
          text: [''],
        }
      ),
    ])
  });
  
  get textSearchs(){
    return this.advancedOption.get('textSearchs') as FormArray;
  }
}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末尸诽,一起剝皮案震驚了整個濱河市甥材,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌性含,老刑警劉巖洲赵,帶你破解...
    沈念sama閱讀 222,252評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡叠萍,警方通過查閱死者的電腦和手機(jī)芝发,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,886評論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來苛谷,“玉大人辅鲸,你說我怎么就攤上這事「沟睿” “怎么了独悴?”我有些...
    開封第一講書人閱讀 168,814評論 0 361
  • 文/不壞的土叔 我叫張陵,是天一觀的道長赫蛇。 經(jīng)常有香客問我绵患,道長,這世上最難降的妖魔是什么悟耘? 我笑而不...
    開封第一講書人閱讀 59,869評論 1 299
  • 正文 為了忘掉前任落蝙,我火速辦了婚禮,結(jié)果婚禮上暂幼,老公的妹妹穿的比我還像新娘筏勒。我一直安慰自己,他們只是感情好旺嬉,可當(dāng)我...
    茶點故事閱讀 68,888評論 6 398
  • 文/花漫 我一把揭開白布管行。 她就那樣靜靜地躺著,像睡著了一般邪媳。 火紅的嫁衣襯著肌膚如雪捐顷。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,475評論 1 312
  • 那天雨效,我揣著相機(jī)與錄音迅涮,去河邊找鬼。 笑死徽龟,一個胖子當(dāng)著我的面吹牛叮姑,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播据悔,決...
    沈念sama閱讀 41,010評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼传透,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了极颓?” 一聲冷哼從身側(cè)響起朱盐,我...
    開封第一講書人閱讀 39,924評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎菠隆,沒想到半個月后兵琳,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體骚烧,經(jīng)...
    沈念sama閱讀 46,469評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,552評論 3 342
  • 正文 我和宋清朗相戀三年闰围,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片既峡。...
    茶點故事閱讀 40,680評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡羡榴,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出运敢,到底是詐尸還是另有隱情校仑,我是刑警寧澤,帶...
    沈念sama閱讀 36,362評論 5 351
  • 正文 年R本政府宣布传惠,位于F島的核電站迄沫,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏卦方。R本人自食惡果不足惜羊瘩,卻給世界環(huán)境...
    茶點故事閱讀 42,037評論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望盼砍。 院中可真熱鬧尘吗,春花似錦、人聲如沸浇坐。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,519評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽近刘。三九已至擒贸,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間觉渴,已是汗流浹背介劫。 一陣腳步聲響...
    開封第一講書人閱讀 33,621評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留疆拘,地道東北人蜕猫。 一個月前我還...
    沈念sama閱讀 49,099評論 3 378
  • 正文 我出身青樓,卻偏偏與公主長得像哎迄,于是被迫代替她去往敵國和親回右。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,691評論 2 361