建立你的第一個Angular應用程式:儲存和存取數據
在本系列的第一個教學中,我們學習如何開始建立 Angular 應用程式。成功完成該教程後,您現在應該擁有第一個正常運行的 Angular 應用程序,其標題為“關於國家/地區的有趣事實”。在創建任何可以在螢幕上呈現的元件之前,我們將建立一些類別並定義一些使這些元件有用的函數。
在本教程中,我們的重點將是建立一個 Country
類,將包含我們想要向使用者顯示其值的不同屬性。然後,我們將建立另一個名為 country-data.ts
的檔案。該文件將包含有關我們應用程式中所有國家/地區的資訊。我們的第三個檔案將被命名為 country.service.ts
。這個名稱可能聽起來很花哨,但該文件將只包含 CountryService
類,該類具有檢索和排序文件 country-data.ts
提供的資訊所需的所有功能。
建立國家/地區類別
在 Angular 應用程式的 src/app
資料夾中,建立一個名為 country.ts
的檔案。在其中添加以下程式碼。
export class Country { name: string; capital: string; area: number; population: number; currency: string; gdp: number; }
上面的 TypeScript 程式碼定義了 Country
類,該類別具有六個不同的屬性來儲存有關不同國家/地區的資訊。國家名稱、首都和貨幣儲存為字串。然而,其面積、人口和 GDP 都以數位形式儲存。我們將在很多地方導入 Country
類,因此我在類定義之前添加了 export
關鍵字。
建立國家數組
下一步包括建立 country-data.ts
文件,以將所有國家/地區的資訊儲存為 Country
物件的陣列。我們將在此文件中導入 Country
類,然後匯出名為 COUNTRIES
的 const
,它儲存國家/地區物件數組。
這是 country-data.ts
的程式碼。就像 country.ts
一樣,您必須在 src/app
資料夾中建立此檔案。
import { Country } from './country'; export const COUNTRIES: Country[] = [ { name: 'Russia', capital: 'Moscow', area: 17098246, population: 144463451, currency: 'Russian Ruble', gdp: 1283162 }, { name: 'Canada', capital: 'Ottawa', area: 9984670, population: 35151728, currency: 'Canadian Dollar', gdp: 159760 }, { name: 'China', capital: 'Beijing', area: 9596961, population: 1403500365, currency: 'Renminbi (Yuan)', gdp: 11199145 }, { name: 'United States', capital: 'Washington, D.C.', area: 9525067, population: 325365189, currency: 'United States Dollar', gdp: 18569100 }, { name: 'Japan', capital: 'Tokyo', area: 377972, population: 12676200, currency: 'Yen', gdp: 4939384 } ];
此檔案中的第一行從位於相同目錄的 country.ts
檔案匯入 Country
類別。如果您從檔案中刪除這一行,TypeScript 將給出以下錯誤:
Cannot find name 'Country'.
如果沒有 import 語句,TypeScript 將不知道 Country
類型的陣列的意思。因此,請確保您已匯入正確的類別並正確指定 country.ts
的位置。
導入 Country
類別後,我們繼續建立 Country
物件的陣列。我們將導入這個國家/地區數組以便在其他文件中使用,因此我們也向該數組添加 export
關鍵字。目前,數組中有五個不同的 Country
物件。這五個物件中的每一個都提供鍵值對,列出特定物件或國家/地區的屬性名稱及其值。
如果您嘗試在 Country
類別定義中宣告的陣列新增其他屬性,您將收到以下錯誤:
Object literal may only specify known properties, and 'president' does not exist in type 'Country'
在本例中,我試圖將總統的名字儲存為 string
,並將其儲存在名為 president
的屬性中。由於沒有聲明這樣的屬性,我們收到了錯誤。有時,您可能只想為特定物件指定屬性,而不為其他物件指定屬性。在這種情況下,您可以在類別定義中將屬性標記為可選。我在涵蓋 TypeScript 介面的教程中更詳細地討論了它。
現在,只需確保所有屬性的名稱與類別定義中的名稱相符即可。還要確保每個屬性的值具有與類別定義中聲明的類型相同的類型。
建立 CountryService 類別
建立 Country
類別和 COUNTRIES
陣列後,我們現在終於可以寫一些函數來處理國家/地區資料了。我們需要在服務文件中匯入 Country
類別和 COUNTRIES
陣列。該檔案需要匯入 COUNTRIES
陣列才能存取資料。同樣,該檔案必須匯入 Country
類,以便理解 COUNTRIES
陣列內的資料。
我们还将从 Angular 核心导入其他依赖项,例如 Injectable
,以使我们的 CountryService
类可用于注入器注入其他组件。
一旦您的应用程序规模增大,不同的模块将需要相互通信。假设 ModuleA
需要 ModuleB
才能正常工作。在这种情况下,我们将 ModuleB
称为 ModuleA
的依赖项。
大多数情况下,只需将我们需要的模块导入到另一个文件中即可。然而,有时我们需要决定是否应该从 ModuleB
创建一个由整个应用程序使用的类实例,或者是否应该在每次使用模块时创建一个新实例。在我们的例子中,我们将在整个应用程序中注入 CountryService
类的单个实例。
这是 country.service.ts
的代码:
import { Injectable } from '@angular/core'; import { Country } from './country'; import { COUNTRIES } from './country-data'; @Injectable() export class CountryService { constructor() { } getCountries(): Country[] { return COUNTRIES; } getPopulatedCountries(): Country[] { return COUNTRIES.sort((a, b) => b.population - a.population).slice(0, 3); } getLargestCountries(): Country[] { return COUNTRIES.sort((a, b) => b.area - a.area).slice(0, 3); } getGDPCountries(): Country[] { return COUNTRIES.sort((a, b) => b.gdp - a.gdp).slice(0, 3); } getCountry(name: string): Country { return COUNTRIES.find(country => country.name === name); } }
@injectable
装饰器用于标识可能需要注入依赖项的服务类。然而,将 @injectable
添加到服务类是必需的编码风格,所以我们无论如何都会这样做。
之后,我们为该类编写不同的方法,这些方法采用 COUNTRIES
数组,直接返回它或使用特定条件对其进行排序,然后返回数组的一部分。
getCountries()
方法预计会返回所有 Country
对象,因此它会返回整个 COUNTRIES
数组,而不进行任何操作对其进行修改。
getPopulatedCountries()
采用 COUNTRIES
数组,并根据不同国家/地区的人口按降序对其进行排序。然后,我们使用 Array.slice() 方法从数组中返回前三个国家(索引为 0、1 和 2)。 getLargestCountries()
和 getGDPCountries()
方法的工作方式类似。
getCountry()
方法采用名称作为参数,并返回 name 属性与提供的 name 参数具有相同值的国家/地区对象。
在 app.module.ts 中包含 CountryService
您创建的服务只是 Angular 中的一个类,直到您使用 Angular 依赖注入器注册它为止。 Angular 注入器将负责创建服务实例并将它们注入到需要该服务的不同类中。我们需要先向提供者注册一个服务,然后注入器才能创建该服务。
注册任何服务有两种常见方法:使用 @Component
提供商或使用 @NgModule
提供商。当您想要限制对特定组件及其所有嵌套组件的服务访问时,使用 @Component
提供程序是有意义的。当您希望多个组件能够访问该服务时,使用 @NgModule
提供程序是有意义的。
在我们的例子中,我们将使用 CountryService
与我们应用程序的多个组件。这意味着我们应该向 @NgModule
提供程序注册一次,而不是向每个组件的 @Component
提供程序单独注册。
目前,您的 app.module.ts
文件应如下所示:
import { BrowserModule } from '@angular/platform-browser'; import { NgModule } from '@angular/core'; import { AppComponent } from './app.component'; @NgModule({ declarations: [ AppComponent ], imports: [ BrowserModule ], providers: [], bootstrap: [AppComponent] }) export class AppModule { }
将导入语句添加到 app.module.ts
文件,并将服务添加到 @NgModule
提供程序数组。进行这些更改后,您的 app.module.ts
文件应如下所示:
import { BrowserModule } from '@angular/platform-browser'; import { NgModule } from '@angular/core'; import { AppComponent } from './app.component'; import { CountryService } from './country.service'; @NgModule({ declarations: [ AppComponent ], imports: [ BrowserModule ], providers: [CountryService], bootstrap: [AppComponent] }) export class AppModule { }
CountryService
类现在可供我们为应用程序创建的所有组件使用。
最终想法
成功创建三个文件,分别名为 country.ts
、country-data.ts
和 country.service.ts
的第二个教程结束这个系列。
country.ts
文件用于创建一个 Country
类,该类具有不同的属性,如名称、货币、人口、面积等。 country-data.ts
文件用于存储国家对象数组,其中包含不同国家的信息。 country.service.ts
文件包含一个服务类,该服务类具有不同的方法来访问 COUNTRIES
数组中的国家/地区数据。将所有这些方法单独编写在服务类中,使我们能够从一个中心位置在不同的应用程序组件中访问它们。
在上一节中,我们向 @NgModule
提供程序注册了我们的服务,以使其可在不同组件内使用。
下一個教學將向您展示如何在應用程式中建立三個不同的元件來顯示國家/地區詳細資訊和國家/地區清單。
以上是建立你的第一個Angular應用程式:儲存和存取數據的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

熱門話題

Angular.js是一種可自由存取的JavaScript平台,用於建立動態應用程式。它允許您透過擴展HTML的語法作為模板語言,以快速、清晰地表示應用程式的各個方面。 Angular.js提供了一系列工具,可協助您編寫、更新和測試程式碼。此外,它還提供了許多功能,如路由和表單管理。本指南將討論在Ubuntu24上安裝Angular的方法。首先,您需要安裝Node.js。 Node.js是一個基於ChromeV8引擎的JavaScript運行環境,可讓您在伺服器端執行JavaScript程式碼。要在Ub

本站3月7日訊息,華為資料儲存產品線總裁週躍峰博士日前出席MWC2024大會,專門展示了為溫資料(WarmData)和冷資料(ColdData)設計的新一代OceanStorArctic磁電儲存解決方案。華為資料儲存產品線總裁週躍峰發布系列創新解決方案圖來源:華為本站附上華為官方新聞稿內容如下:該方案的成本比磁帶低20%,功耗比硬碟低90%。根據國外科技媒體blocksandfiles報道,華為發言人也透露了關於該磁電儲存解決方案的資訊:華為的磁電磁碟(MED)是對磁性儲存媒體的重大創新。第一代ME

Vue3+TS+Vite開發技巧:如何進行資料加密和儲存隨著網路技術的快速發展,資料的安全性和隱私保護變得越來越重要。在Vue3+TS+Vite開發環境下,如何進行資料加密和存儲,是每個開發人員都需要面對的問題。本文將介紹一些常用的資料加密和儲存的技巧,幫助開發人員提升應用程式的安全性和使用者體驗。一、資料加密前端資料加密前端加密是保護資料安全性的重要一環。常用

什麼是緩存?快取(發音為ka·shay)是一種專門的高速硬體或軟體元件,用於儲存經常要求的資料和指令,這些資料和指令又可用於更快地載入網站、應用程式、服務和系統的其他部分。快取使最常存取的資料隨時可用。快取檔案與快取記憶體不同。快取文件是指經常需要的文件,如PNG、圖標、徽標、著色器等,多個程式可能需要這些文件。這些檔案儲存在您的實體磁碟機空間中,通常是隱藏的。另一方面,高速緩存記憶體是一種比主記憶體和/或RAM更快的記憶體類型。它極大地減少了資料存取時間,因為與RAM相比,它更靠近CPU並且速度

隨著網路的快速發展,前端開發技術也不斷改進與迭代。 PHP和Angular是兩種廣泛應用於前端開發的技術。 PHP是一種伺服器端腳本語言,可以處理表單、產生動態頁面和管理存取權限等任務。而Angular是一種JavaScript的框架,可以用來開發單一頁面應用程式和建構元件化的網頁應用程式。本篇文章將介紹如何使用PHP和Angular進行前端開發,以及如何將它們

angular中怎麼使用monaco-editor?以下這篇文章記錄下最近的一次業務中用到的 monaco-editor 在 angular 中的使用,希望對大家有幫助!

Angular框架中元件的預設顯示行為不是區塊級元素。這種設計選擇促進了元件樣式的封裝,並鼓勵開發人員有意識地定義每個元件的顯示方式。透過明確設定CSS屬性 display,Angular組件的顯示可以完全控制,從而實現所需的佈局和響應能力。
