發表文章

目前顯示的是 8月, 2019的文章

[Angular Material] Expansion-panel 用法小記錄

實現個別開啟個別關閉又可以全部開啟全部關閉 以下範例是3個可以可以伸縮的框框 主要屬性是這兩個 < mat-accordion #accordion = " matAccordion " [multi] = " true " > 再配上給的方法放在button上 (click) = " accordion.openAll() " (click) = " accordion.closeAll() " TS檔 export class Sc2AccountFeaturesSettingComponent implements OnInit { panelOpenState1 = false ; panelOpenState2 = false ; panelOpenState3 = false ; } HTML檔 < button mat-raised-button color = " primary " (click) = " accordion.openAll() " > 全部展開 </ button > < button mat-raised-button color = " primary " (click) = " accordion.closeAll() " > 全部收合 </ button > < mat-accordion #accordion = " matAccordion " [multi] = " true " > < mat-expansion-panel (opened) = " panelOpenState1 = true " (closed) = " panelOpenState1 = false " > < mat...

[Git] 一份專案push到多個遠端去儲存

因為專案多地備份比較保險 雖然一個壞了還有本機 但是push時如果能夠多地存放 這樣也可以降低風險 所以有了以下文章 第一步 準備一個以上的遠端,不然你幹嘛看這篇文章XD 第二步 在專案上打 git remote -v 確認目前origin的fetch和push的狀態 正常應該各有一個 類似這樣 origin https://bitbucket.org/wanghccharles/test.git (fetch) origin https://bitbucket.org/wanghccharles/test.git (push) 第三步 去專案的資料夾找.git/config 這檔案 打開後應該長這樣 找到 [ remote "origin" ] 後 在 pushurl 的後面 直接再加上第二個遠端地點的網址 [ remote "origin" ]      url = wanghc@172.16.114.227:/home/gitwin/BPM_Forms/3012      fetch = +refs/heads/*:refs/remotes/origin/*      pushurl = https://wanghccharles@bitbucket.org/wanghccharles/test.git      pushurl = https://wanghccharles@bitbucket.org/wanghccharles/test2.git 再存起來 第四步 再打一次 git remote -v 指令確認 應該會變這樣 origin https://bitbucket.org/wanghccharles/test.git (fetch) origin https://bitbucket.org/wanghccharles/test.git (push) origin https://bitbucket.org/wanghccharles/test...

[Angular] ngOnChanges() 和subscribe()使用之我見

只是個人想法 可能會有錯誤觀念 請謹慎服用 --------------------------------------- ngOnChanges() 就如同文件上寫的 是時間周期的鉤子之一 在解決元件無法更新或是處理時 都會習慣把function丟到裡面 但這其實不是個很好的寫法 因為ngOnChanges() 是很消耗效能的 和input的用control 去抓error message的觸發一樣都是動不動就在偵測和檢測的類型 所以被學長念過後 改用subscribe() subscribe()的概念 則是該欄位或是該部件 搭配使用.valueChanges 需要有更動時在讓它發出呼叫和請求 就不必耗效能隨時在那邊注意有沒有被觸發或是 如範例 ngOnInit() { //等到這form這個欄位有被變動時,再發出請求去執行裡面的函式 this.customerForm.get('quotaType').valueChanges.subscribe(res => { this.checkbusinessLength(); }); }

[Angular] 讓錯誤訊息(getErrorMessage)配合驗證器(Validators)變動-使用updateValueAndValidity()和subscribe()

因為自訂的驗證器 在ngOnInit()中 所以只會呼叫一次表單 所以創建表單後 裡面的Validators就一直維持在0 因為Validators.minLength(0), Validators.maxLength(0) createCustomerForm() { this.customerForm = this.fb.group({ quotaType: ['', Validators.required], customerAccount: [ '', [Validators.required, Validators.minLength(0), Validators.maxLength(0)] ], }); } 後面如果要再變更的話 需要讓前面發出指令讓後面知道需要執行 所以使用 .valueChanges.subscribe(res => { this.checkbusinessLength(); //根據條件判斷的函式 }); ngOnInit() { this.createCustomerForm(); //初始表單內容 this.customerForm.get('quotaType').valueChanges.subscribe(res => { this.checkbusinessLength(); //根據條件判斷的函式 }); } //根據條件判斷的函式 //如果選項是 選項A / 選項B / 沒東西 時判斷 checkbusinessLength() { const oldBusinessType = this.customerForm.get('quotaType'); switch (oldBusinessType.value) { case '選項A': this.customerForm.get('customerAccount').clear...