- Angular 第一個專案
- Vite Angular 第一個專案
- Angular Material 建立元件
- Angular環境變數
- Angular打包
- Angular 生命週期
- Angular 路由
- Angular 路由守衛
- Angular綁定方法
- Angular 資料與圖片渲染
- Angular 表單與按鈕的綁定並執行函式
- Angular 列表渲染與判斷
- Angular NgClass & NgStyle
- Angular 表單雙向綁定
- Angular Pipe
- Angular Directive(指示)
- Angular CRUD
- Angular 中的 constructor與ngOnInit 有什麼差別
- Angular Error
- Angular 實戰 ul li active
- Angular 父對子傳值@input
- Angular 子對父傳值 Output, EventEmitter
- Angular @input @Output()
- 事件防止冒泡
- Angular Sign
- Angular HttpClient
- Angular表單驗證
- Angular Bootstrop
- Angular預先載入 Resolve
- Angular SSR預渲染的建置選項
Google Sheet 使用 Google Apps Script 開Api
GetApi
Google Apps Script 是 Google 所開發的腳本平台,
拷貝Google Sheet id
https://docs.google.com/spreadsheets/d/[googlesheetId]/edit?gid=0#gid=0
建立 Google Apps Script
回到 Google 雲端硬碟中建立一個 Google Apps Script
1 | function doGet() { |
部署公開
複製網址
到 Posman 測試Api
- Google Sheet 使用 Google Apps Script 開Api
- 使用 Google Apps Script 解決 CORS 問題
- 利用Google App Script將資料存入Google Sheets(1)
- 寫給純前端,讓 Google Sheets 當你的後端完成寫入功能
- Google試算表、雲端硬碟與Apps Script運用:建立自己的線上資料查詢下載系統
- GoogleAppScript (GAS ) 使用基本操作1
- GoogleAppScript (GAS ) 使用基本操作2
- 用 Google Apps Script 操作試算表 (1)製作資料庫 + 寫入資料
- 試算表
- sheetdb.io
- Google Sheets API
- 以 Google Apps Script 將資料寫入試算表
- Google Apps Script 整合影片 表單送出塞入Excell 寄送郵件
https://gist.github.com/ex-preman/e892f72404a0e4779999f8b439cec1b1
Google Driver
Sep1 啟用Api
圖片的使用
取得網址為↓
https://drive.google.com/file/d/1HDh0GvM2Kk-YaqtREE9a3znSrc96kI5c/view?usp=sharing
複製網址中的{id}
https://drive.google.com/file/d/{1RV1W88E5U6ssO1_7ktLEQxtZx-6i2SEo}/view?usp=sharing
將 id 貼在下列網址末端
https://drive.google.com/uc?export=view&id=1HDh0GvM2Kk-YaqtREE9a3znSrc96kI5c
https://drive.google.com/file/d//view?usp=sharing
Angular 寫法
1 | <img [src]="'https://drive.google.com/thumbnail?id='+item.image+'&sz=w1366'"/> |
Angular 預先載入資料Resolve
切入頁面要等一下資料才會出來會造成使用者體驗不佳的問題使用 Resolve 預先載入資料
產生resolve的指令
1 | ng g c ToDoResolve |
放置到src/app/@resolve
- constructor 依賴注入TodoApiService
1 | import { TodoApiService } from './../@services/todo-api.service'; |
該路由設定
1 | const routes: Routes = [ |
PagePraComponent頁面使用
1 | constructor( |
Angular Router CanActivate路由導航守衛
- 引入 Injectableimport { Injectable } from '@angular/core';
- 引入 ActivatedRouteSnapshot, CanActivate, Router, RouterStateSnapshot, UrlTreeimport { ActivatedRouteSnapshot, CanActivate, Router, RouterStateSnapshot, UrlTree } from '@angular/router';
- 引入 Observable import { Observable } from 'rxjs';
-
class AuthGuard implements CanActivate 內constructor(private router: Router) { }canActivate( localStorage.getItem('token') 有登入並且沒有過期的jwt,沒有時,導到登入頁面 )
1 | import { Injectable } from '@angular/core'; |
Angular ng-bootstrap 分頁搜尋排序
Table Sort Serarh Pagination
1 | //country.ts |
1 | //countries.ts |
1 | /* eslint-disable @typescript-eslint/adjacent-overload-signatures */ |
1 | // sortable.directive.ts |
1 | // users.component.ts |
1 | <p>這是一個更完整的範例,其中包含模擬伺服器呼叫的服務::</p> |
1 | //table |
Angular 表單驗證
[(ngModel)]="form.username"
Ts引入 FormsModule
input 綁定 #username=”ngModel”
input 綁定name name="username"
input 綁定required required
input 綁定minlength minlength="ˇ"
input 綁定pattern pattern="^09\d{8}$"
input (change)="onChangeName(username)"
(change)行為函式onChangeName帶入參數username,
console.log(username)
// touched 觸擊
// invalid 無效
// errors 錯誤 [‘required’] 或 [‘minlength’] 或 [‘pattern’]
form 綁定#loginForm=”ngForm” 點擊 (ngSubmit)=”loginSubmit(loginForm)
< form #loginForm="ngForm" (ngSubmit)="loginSubmit(loginForm)" >
loginSubmit(loginForm) 函式 獲得參數=> 如果不等於空時,跳出驗證
1 | <div class="form_conatiner"> |
ts
1 | import { NgClass, NgFor, NgIf } from '@angular/common'; |
表單驗證github
Angular Ng-bootstrap
安裝語法
1 | ng add @ng-bootstrap/ng-bootstrap |
錯誤訊息 Sass @import rules are deprecated and will be removed in Dart Sass 3.0.0.
Sass @import rules are deprecated and will be removed in Dart Sass 3.0.0.
More info and automated migrator: https://sass-lang.com/d/import
The plugin “angular-sass” was triggered by this import
angular:styles/global:styles:2:8:
2 │ @import 'src/styles.scss';
╵ ~~~~~~~~~~~~~~~~~
處理方式
angular.json/
"projects": {
"vite_angular19_st_project": {
"architect": {
"build": {
"options": {
加在這裡
}
}
}
}
}
1 | "projects": { |
錯誤訊息 [ERROR] Can’t find stylesheet to import.
✘ [ERROR] Can’t find stylesheet to import.
╷
1 │ @use ‘bootstrap/scss/bootstrap’;
處理方式 安裝 bootstrap,如果安裝完成package.json 會出現”dependencies” 內 “bootstrap”: “^5.3.5”,”@popperjs/core”: “^2.11.8”,
1 | npm install --save bootstrap |
styles.scss引入 bootstrap
1 | @use 'bootstrap/scss/bootstrap'; |
測試Html
1 | <ng-template #content let-modal> |
TS
1 | import { Component, inject, signal, TemplateRef, WritableSignal } from '@angular/core'; |