Angular--Hello(TODO)

最近有個小錯誤,因為最近還是在看thingsboard,最近終于看到前端的代碼,突然發現怎么全是ts的文件,仔細一看原來并不是之前認為的AngularJS,而是Angular。。。我tm真的無語了,又要去重新學。。。

Angular的結構比起AngularJS真的復雜很多,以前還可以說是傳統HTML+JS結構的擴展。新的版本真的大變了。

以前的AngularJS只要一個html就是開炫,現在是要一堆文件,就算摸清楚最小系統,也要折騰一番,唉,好吧。。。

1 環境配置

手動配置Angular的環境也是堪稱折磨,尤其是package.json,tsconfig.json。所以一般都用自動配置。

首先是安裝node.js,安裝的原始命令是:

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
因為眾所周知的原因,這個命令很大概率要超時,必須換成。

curl -o- https://gitee.com/mirrors/nvm/raw/v0.39.7/install.sh | bash

之后source ~/.bashrc

然后升級nvm install --lts
# 然后全局安裝 Angular CLI
npm i -g @angular/cli

后面用到的ng命令,就是Angular CLI工具。這個工具的幫助如下:?

# 創建項目(這一步 CLI 會自動生成配置和依賴),
ng new hello-angular --minimal --routing=false --style=css
cd hello-angular
ng serve -o ? ? ?# 默認 http://localhost:4200

2 典型的Angular

在上一步生成的代碼基礎上,做了一些修改。如下:?

?main.ts

import { bootstrapApplication } from '@angular/platform-browser';
import { App } from './app/app';
import { appConfig } from './app/app.config';bootstrapApplication(App, appConfig).catch((err) => console.error(err));

index.html

<!DOCTYPE html>
<html lang="en"><head><meta charset="utf-8" /><title>HelloAngular</title><base href="/" /></head><body><app-root></app-root>  <!-- 👈 Angular 根組件掛載點 --></body>
</html>

?app.ts

import { Component } from '@angular/core';
import { FormsModule } from '@angular/forms';
import { CommonModule } from '@angular/common'; // ? 加上這個!
import { TodoService, TodoItem } from './todo.service';@Component({selector: 'app-root',standalone: true,imports: [FormsModule, CommonModule],  // ? 把 CommonModule 加入 importstemplateUrl: './app.component.html',styleUrls: ['./app.component.css'],
})
export class App {newTitle = '';constructor(public todo: TodoService) {}add() {if (this.newTitle.trim()) {this.todo.add({ title: this.newTitle.trim(), done: false });this.newTitle = '';}}toggle(item: TodoItem) {this.todo.toggle(item);}remove(item: TodoItem) {this.todo.remove(item);}
}

todo.service.ts

import { Injectable } from '@angular/core';export interface TodoItem {title: string;done: boolean;
}@Injectable({ providedIn: 'root' })
export class TodoService {list: TodoItem[] = [];add(item: TodoItem) { this.list.push(item); }toggle(item: TodoItem) { item.done = !item.done; }remove(item: TodoItem) { this.list = this.list.filter(i => i !== item); }
}

app.config.ts

import { ApplicationConfig, provideBrowserGlobalErrorListeners, provideZoneChangeDetection } from '@angular/core';export const appConfig: ApplicationConfig = {providers: [provideBrowserGlobalErrorListeners(),provideZoneChangeDetection({ eventCoalescing: true }),]
};

app.component.html

<h1>📝 Angular Todo (standalone)</h1><inputplaceholder="輸入待辦事項"[(ngModel)]="newTitle"(keyup.enter)="add()"
/>
<button (click)="add()">添加</button><ul><li *ngFor="let item of todo.list"><input type="checkbox" [checked]="item.done" (change)="toggle(item)" /><span [class.done]="item.done">{{ item.title }}</span><button (click)="remove(item)">🗑</button></li>
</ul>

app.component.css

.done { text-decoration: line-through; color: #888; }
li   { margin: 4px 0; }

?

概念代碼位置說明
組件 (Component)AppComponentUI 單元 + 邏輯
模板 (Template)app.component.htmlHTML + Angular 指令 (*ngFor, [(ngModel)])
服務 (Service)TodoService業務數據與方法,注入到組件
注入 (DI)constructor(public todo: TodoService)將服務注入組件
雙向綁定[(ngModel)]="newTitle"表單輸入 ? 組件字段
事件綁定(click)="add()"用戶操作觸發方法

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/85288.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/85288.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/85288.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

在 Linux 系統中通過 yum 安裝 Sublime Text

在 Linux 系統中通過 yum 安裝 Sublime Text 的步驟如下&#xff1a; ?步驟 1&#xff1a;導入 GPG 公鑰? sudo rpm -v --import https://download.sublimetext.com/sublimehq-rpm-pub.gpg 這一步用于驗證軟件包的合法性。 ?步驟 2&#xff1a;添加 Sublime Text 的軟件倉…

面向自主多星對地觀測的多智能體強化學習

大家讀完覺的有幫助記得及時關注和點贊&#xff01;&#xff01;&#xff01; 抽象 近地軌道 &#xff08;LEO&#xff09; 衛星的指數級增長徹底改變了地球觀測 &#xff08;EO&#xff09; 任務&#xff0c;解決了氣候監測、災害管理等方面的挑戰。然而&#xff0c;多衛星系統…

flutter 短視頻相關插件選型

?插件名稱??核心優勢??缺點??短視頻場景適用性??推薦指數??video_player? (官方基礎庫)? 官方維護&#xff0c;跨平臺兼容性最佳&#xff08;iOS/Android/macOS&#xff09; ? 輕量級&#xff0c;無額外依賴&#xff0c;啟動速度快 ? 支持本地/網絡視頻、基礎播…

QTableView為例:Qt模型視圖委托(MVD)(Model-View-Delegate)

文章目錄 1. QT中的MVD模式2. View3. Model4. Delegate5. 以TableView為例 1. QT中的MVD模式 模型視圖委托&#xff08;MVD&#xff09;是Qt中特有的設計模式&#xff0c;類似MVC設計模式&#xff0c;將MVC設計模式中的Controller當做MVD中的Delegate&#xff0c;兩者的概念基…

uni-app總結3-項目新建運行調試

一、新建項目 通過HbuilderX新建 在點擊工具欄里的文件 -> 新建 -> 項目&#xff08;快捷鍵CtrlN&#xff0c;MacOS上是CMD N&#xff09;&#xff1a; 左測Tab選擇uni-app類型&#xff0c;輸入工程名&#xff0c;選擇模板&#xff0c;Vue版本選擇3&#xff0c;其他不…

LeetCode 每日一題打卡|若谷的刷題日記 4day--移動零

移動零 題目&#xff1a; 給定一個數組 nums&#xff0c;編寫一個函數將所有 0 移動到數組的末尾&#xff0c;同時保持非零元素的相對順序。 請注意 &#xff0c;必須在不復制數組的情況下原地對數組進行操作。 示例 1&#xff1a; 輸入: nums [0,1,0,3,12] 輸出: [1,3,1…

簡歷模板3——數據挖掘工程師5年經驗

姓名 / Your Name 數據挖掘工程師 | 5年經驗 | 推薦/畫像/反欺詐 &#x1f4de; 138-XXXX-XXXX | ?? your.emailexample.com | &#x1f310; github.com/yourname | &#x1f4cd; 北京 &#x1f3af; 個人簡介 / Summary 5年大廠數據挖掘工程經驗&#xff0c;碩士學歷&am…

Vue添加圖片作為水印

直接上代碼 把圖片作為水印 <div class"info-warp"><div class"image-container"><img src"https://img.shetu66.com/2023/06/28/1687920981963810.png" /><div class"watermark-layer"><imgv-for"…

Conda 常用命令大全:從入門到高效使用

Conda 常用命令大全&#xff1a;從入門到高效使用 Conda 是 Python 生態中最流行的環境管理工具之一&#xff0c;它不僅可以管理 Python 包&#xff0c;還能創建隔離的虛擬環境&#xff0c;適用于數據分析、機器學習、科學計算等場景。本文將介紹 Conda 的常用命令&#xff0c…

【系統更新】TDuckX2.7升級!DSL邏輯、自定義Webhook、AI考試來襲

No.1 支持自定義 DSL 公式 邏輯規則支持自定義 DSL&#xff0c;通過公式表達式構建復雜邏輯條件&#xff0c;能夠支持選項、矩陣、自增表單中的內容控制&#xff0c;可以滿足多變業務場景&#xff0c;極大提升了邏輯配置的靈活性。 No.2 擴展值新增“名稱字段” 在批量生成擴…

安卓9.0系統修改定制化____深入解析安卓 9.0 各手機分區:功能、作用與差異 基礎篇二

在安卓 9.0 系統中,手機內部存儲被劃分為多個不同的分區,每個分區都承擔著獨特且重要的職責。深入了解這些分區,對于我們理解安卓系統運行機制、進行系統優化,甚至是刷機等操作都有著極大的幫助。尤其是rom定制與修改方面。 通過博文了解?????? 1??????-----了…

自動駕駛技術路線之爭:視覺派、激光雷達派與融合派,誰將引領未來?

自動駕駛的賽道上&#xff0c;科技巨頭、傳統車企和初創公司紛紛亮出“看家本領”。但你是否注意到&#xff0c;不同玩家的“眼睛”和“大腦”配置大相徑庭&#xff1f;特斯拉CEO馬斯克曾稱“激光雷達是徒勞的拐杖”&#xff0c;而國內華為、小鵬等企業則堅定擁抱激光雷達。這背…

Spring Cloud Alibaba 中間件

Spring Cloud Alibaba 中間件 &#x1f517; Spring官方介紹 [??Spring官方對Spring Cloud Alibaba的更新不及時] &#x1f517; Spring Cloud Alibaba官網 &#x1f4dd; 代碼記錄 Nacos&#xff08;服務注冊與發現&#xff09; Nacos(Dynamic Naming and Configuration…

uniapp+vue中 多次觸發onLoad/created

控制臺log輸出為何頻頻失蹤?   wxss代碼為何頻頻失效?   wxml布局為何亂作一團?   究竟是道德的淪喪?還是人性的缺失?   讓我們一起來 走 跑進科學 前言 uniapp中開發網頁h5&#xff0c;莫名其妙每次請求接口都會執行兩次&#xff0c;仔細排查發現是onLoadonShow…

[論文閱讀] 人工智能+軟件工程 | 軟件工程中非代碼工作的LLM能力評估

軟件工程中非代碼工作的LLM能力評估 論文信息 misc{2506.10833v1,title{Evaluating Large Language Models on Non-Code Software Engineering Tasks},author{Fabian C. Pea and Steffen Herbold},year{2025},eprint{2506.10833},archivePrefix{arXiv},primaryClass{cs.SE} }…

Data URI Scheme 詳解:將數據嵌入 URL 的技術方案

一、Data URI Scheme 是什么&#xff1f; Data URI 是一種特殊的URL格式&#xff0c;允許將數據&#xff08;如圖像、文本、音頻等&#xff09;直接嵌入到URL中&#xff0c;而無需引用外部資源。它由RFC 2397標準定義&#xff0c;常用于前端開發中減少HTTP請求次數&#xff0c…

基于Redis方案的分布式鎖的Java實現

前期&#xff0c; 我們介紹了什么是分布式鎖及分布式鎖應用場景&#xff0c; 今天我們基于Redis方案來實現分布式鎖的應用。 1. 基于Redis分布式鎖方案介紹 基于Redis實現的分布式鎖是分布式系統中控制資源訪問的常用方案&#xff0c;利用Redis的原子操作和高性能特性實現跨進…

Kafka源碼P2-生產者緩沖區

歡迎來到啾啾的博客&#x1f431;。 記錄學習點滴。分享工作思考和實用技巧&#xff0c;偶爾也分享一些雜談&#x1f4ac;。 有很多很多不足的地方&#xff0c;歡迎評論交流&#xff0c;感謝您的閱讀和評論&#x1f604;。 目錄 1 引言2 緩沖區2.1 消息在Partition內有序2.2 批…

力扣網C語言編程題:三數之和

一. 簡介 本文記錄力扣網上的邏輯編程題&#xff0c;涉及數組方面的&#xff0c;這里記錄一下 C語言實現和Python實現。 二. 力扣網C語言編程題&#xff1a;三數之和 題目&#xff1a;三數之和 給你一個整數數組 nums &#xff0c;判斷是否存在三元組 [nums[i], nums[j], nu…

2.2 Windows MSYS2編譯FFmpeg 4.4.1

一、安裝編譯工具 # 更換pacman源 sed -i "s#mirror.msys2.org/#mirrors.ustc.edu.cn/msys2/#g" /etc/pacman.d/mirrorlist* pacman -Sy# 安裝依賴 pacman -S --needed base-devel mingw-w64-x86_64-toolchain pacman -S mingw-w64-x86_64-nasm mingw-w64-x86_64-ya…