-
Notifications
You must be signed in to change notification settings - Fork 23
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
add angular docs #97
base: master
Are you sure you want to change the base?
add angular docs #97
Changes from 5 commits
6fad9c4
6eae037
cc8a5e7
77ddbb3
46c10dd
1f9480e
9e4845f
1e91d56
ecb3df4
65572c7
09d826f
0bf6fe6
c61b7d1
dfcc27c
efbdf14
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,300 @@ | ||
--- | ||
title: Angular | ||
description: When I was a kid, my mom used to just throw me into a pile of broken glass! | ||
tags: [Angular,NodeJs] | ||
--- | ||
# Angular | ||
|
||
## مقدمهای بر Angular | ||
[Angular](https://angular.io/) یک فریمورک و پلتفرم برای ساخت برنامههای تکصفحهای (SPA یا single page application) با استفاده از HTML و TypeScript است. این فریمورک توسط گوگل توسعه داده شده و نگهداری میشود و ابزارها و معماری محکمی را برای ساخت برنامههای قابل گسترش ارائه میدهد. | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. به طور کلی کلمات انگلیسی به صورت There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. done |
||
|
||
### ویژگیها و مزایای کلیدی Angular | ||
- **TypeScript** | ||
Angular با TypeScript نوشته شده است که یک super set بر JavaScript است و ویژگیهای زیادی از جمله تایپ استاتیک را به زبان اضافه میکند. | ||
mazaheriMahdi marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
||
- **Templating** | ||
Angular از یک سیستم طراحی template پیشرفته استفاده میکند که به شما این امکان را میدهد تا بتوانید به راحتی دادههای پویا را به template متصل کنید. | ||
|
||
- **Component / Directive** | ||
با استفاده از دایرکتیوها و کامپوننتها میتوانید رفتارها و نماهایی با قابلیت استفاده مجدد ایجاد کنید. | ||
**** | ||
|
||
|
||
# مرور کلی بر Angular | ||
|
||
Angular از مفاهیم و ابزارهای متعددی تشکیل شده که به توسعهدهندگان کمک میکند تا برنامههای وب پیچیده را به روشی ماژولار و ساختاریافته توسعه دهند. در اینجا برخی از مفاهیم کلیدی و اجزای اصلی Angular آورده شده است: | ||
|
||
- **ماژولها (Modules)** | ||
mazaheriMahdi marked this conversation as resolved.
Show resolved
Hide resolved
|
||
هر برنامه Angular از یک یا چند ماژول تشکیل شده است. ماژولها به سازماندهی کد و مدیریت وابستگیها کمک میکنند. | ||
|
||
- **کامپوننتها (Components)** | ||
کامپوننتها بلوکهای ساختمانی اصلی یک برنامه Angular هستند. هر کامپوننت شامل یک کلاس TypeScript، یک قالب HTML و یک فایل سبک CSS است. | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. سَبُک؟ یا سَبک؟ There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. کلا حذفش کردم به نظرم معنی نداشت اصلا باشه اینجا |
||
|
||
- **دایرکتیوها (Directives)** | ||
دایرکتیوها به شما امکان میدهند تا رفتارهای خاصی را به عناصر DOM اضافه کنید. | ||
|
||
- **سرویسها (Services)** | ||
سرویسها برای مدیریت منطق و تبادل دادهها بین کامپوننتها استفاده میشوند. | ||
|
||
- **تزریغ وابستگی (Dependency Injection)** | ||
mazaheriMahdi marked this conversation as resolved.
Show resolved
Hide resolved
|
||
تزریغ وابستگی یک design pattern است که در Angular برای مدیریت وابستگیها استفاده میشود. | ||
|
||
- **روتر (Router)** | ||
روتر به شما امکان میدهد تا بین نماهای مختلف در برنامه جابهجا شوید. | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. اگر اینجا میگیم نما بعدا جاهای دیگه هم باید همین کلمه رو استفاده کنیم. برای همین بهتره که از کلمات انگلیسی استفاده کنیم تا در طول متن There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. done |
||
|
||
|
||
### پیشنیازها | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. بهتره که اینطوری طرف رو ول نکنیم تا بره یه سری چیز رو بخونه و بیاد. در عوض داخل متن بهش بگیم ما به فلان چیز نیاز داریم پس برو فلان پیج رو بخون. |
||
- [نصب node.js](https://nodejs.org/en/learn/getting-started/how-to-install-nodejs) | ||
- [همه چیز درباره node.js](https://www.freecodecamp.org/news/what-is-npm-a-node-package-manager-tutorial-for-beginners/) | ||
- [پکیچ منیجر های دیگر](https://romanglushach.medium.com/comparing-npm-yarn-and-pnpm-package-managers-which-one-is-right-for-your-distributed-project-to-4d7de2f0db8e) | ||
- [نصب و راه اندازی Angular](https://v17.angular.io/guide/setup-local) | ||
- [ساختار پروژه](https://dev.to/tomwebwalker/angular-starting-files-explanation-for-beginners-15cp) | ||
- [فایل angular.json](https://dev.to/tomwebwalker/angularjson-structure-for-beginners-what-we-can-set-27f3) | ||
|
||
|
||
# مفاهیم اساسی Angular | ||
## Components | ||
|
||
کامپوننتها بلوکهای ساختمانی اصلی برنامههای Angular هستند. هر کامپوننت شامل یک کلاس TypeScript، یک قالب HTML و یک فایل سبک CSS است. کامپوننتها به شما امکان میدهند تا بخشهای مختلف برنامه را به صورت مجزا توسعه داده و مدیریت کنید. | ||
|
||
برای ساخت کامپوننت از `@Component` استفاده میکنیم. در این decorator مشخصه `selector` مشخص میکند که این کامپوننت با چه تگی در HTML استفاده خواهد شد، `template` قالب HTML کامپوننت را تعریف میکند، و `styles` استایلهای CSS مربوط به کامپوننت را مشخص میکند. | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. درباره پترن There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. به جای @component بنویس دیکوریتور component که به صورت @component نمایش داده میشود |
||
|
||
### مثال از یک کامپوننت ساده | ||
|
||
در این مثال، یک کامپوننت ساده به نام `HelloWorldComponent` ایجاد میکنیم که یک پیام “Hello, World!” را نمایش میدهد. برای ایجاد یک کامپوننت جدید با استفاده از Angular CLI، دستور زیر را در ترمینال اجرا کنید: | ||
|
||
```sh | ||
ng generate component hello-world | ||
``` | ||
|
||
یا به صورت مختصر: | ||
|
||
```sh | ||
ng g c hello-world | ||
``` | ||
|
||
این دستور در هر دایرکتوری اجرا شود به صورت خودکار دایرکتوری جدید شامل فایل HTML، CSS، TypeScript و فایل تست تشکیل میدهد. (برای نام گذاری componentها از قرارداد `name.component.ts` و برای تست از `name.component.spec.ts` استفاده میشود) | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. و فایل تست There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. تستو نگفتی ساخته میشه |
||
|
||
فایل `hello-world.component.ts` به این صورت خواهد بود: | ||
|
||
```typescript | ||
import { Component } from '@angular/core'; | ||
|
||
@Component({ | ||
selector: 'app-hello-world', | ||
template: '<h1>Hello, World!</h1>', | ||
styles: ['h1 { color: blue; }'] | ||
}) | ||
export class HelloWorldComponent {} | ||
``` | ||
|
||
در این مثال: | ||
- `selector` مشخص میکند که این کامپوننت با استفاده از تگ `<app-hello-world>` در HTML استفاده خواهد شد. | ||
- `template` قالب HTML کامپوننت را تعریف میکند. | ||
- `styles` استایلهای CSS مربوط به کامپوننت را تعریف میکند. | ||
|
||
برای استفاده از این کامپوننت در برنامه، میتوانید تگ `<app-hello-world>` را به قالب `app.component.html` اضافه کنید: | ||
|
||
```html | ||
<app-hello-world></app-hello-world> | ||
``` | ||
|
||
حال با اجرای مجدد پروژه، کامپوننت ساخته شده نمایش داده میشود. | ||
|
||
برای مطالعه بیشتر به [مستندات رسمی](https://angular.dev/api/core/Component#viewProviders) انگولار مراجعه کنید. | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. اینجا یکم صمیمیتر بهشون بگیم حالا برو تو داک رسمی یه چیزی رو بخون و یک کاری رو بر اساس اون چیزی که یاد گرفتی انجام بده. |
||
|
||
## Dependency injection | ||
|
||
// TODO : Poya | ||
|
||
|
||
## Services | ||
|
||
سرویسها (Services) در انگولار یکی از اصول اصلی و مهم این فریمورک هستند که برای مدیریت منطق و دادههای اپلیکیشن استفاده میشوند. سرویسها به طور معمول برای انجام کارهایی مثل درخواستهای HTTP، ذخیره و بازیابی دادهها، و به اشتراکگذاری دادهها بین کامپوننتها به کار میروند. این مفهوم به منظور تفکیک منطق کسب و کار از رابط کاربری (UI) به کار گرفته میشود. | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. اینجا اگر به جای کسب و کار از کلمه بیزنس هم استفاده کنیم بد نیست چون معمولا تو ادبیات خودمون بهش میگیم بیزنس لاجیک. |
||
|
||
### تعریف سرویس | ||
|
||
برای ایجاد یک سرویس در انگولار، ابتدا باید یک کلاس ایجاد کرده و سپس این کلاس را با استفاده از دکوراتور `@Injectable` تزریقپذیر (injectable) کنید. به عنوان مثال، یک سرویس ساده برای مدیریت کاربران را در نظر بگیرید: | ||
|
||
```typescript | ||
import { Injectable } from '@angular/core'; | ||
|
||
@Injectable({ | ||
providedIn: 'root', | ||
}) | ||
export class UserService { | ||
private users = ['Alice', 'Bob', 'Charlie']; | ||
|
||
constructor() {} | ||
|
||
getUsers() { | ||
return this.users; | ||
} | ||
|
||
addUser(user: string) { | ||
this.users.push(user); | ||
} | ||
} | ||
``` | ||
|
||
### استفاده از سرویس در کامپوننت | ||
|
||
برای استفاده از این سرویس در یک کامپوننت، باید آن را در constructor کامپوننت تزریق (inject) کنید: | ||
|
||
```typescript | ||
import { Component, OnInit } from '@angular/core'; | ||
import { UserService } from './user.service'; | ||
|
||
@Component({ | ||
selector: 'app-user', | ||
template: ` | ||
<div> | ||
<ul> | ||
<li *ngFor="let user of users">{{ user }}</li> | ||
</ul> | ||
<input [(ngModel)]="newUser" placeholder="Add user" /> | ||
<button (click)="addUser()">Add</button> | ||
</div> | ||
`, | ||
}) | ||
export class UserComponent implements OnInit { | ||
users: string[] = []; | ||
newUser: string = ''; | ||
|
||
constructor(private userService: UserService) {} | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. داخل توضیح بگو تو کانستراکتور اینجکتش میکنیم There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. گفتیم |
||
|
||
ngOnInit() { | ||
this.users = this.userService.getUsers(); | ||
} | ||
|
||
addUser() { | ||
this.userService.addUser(this.newUser); | ||
this.newUser = ''; | ||
} | ||
} | ||
``` | ||
|
||
### توضیح: | ||
|
||
1. **ایجاد سرویس**: یک کلاس با نام `UserService` ایجاد میشود و از دکوراتور `@Injectable` استفاده میکند تا انگولار بفهمد این کلاس قابل تزریق است. | ||
2. **متدهای سرویس**: این سرویس دو متد `getUsers` و `addUser` دارد که به ترتیب کاربران را بازیابی و اضافه میکنند. | ||
3. **تزریق سرویس در کامپوننت**: در کلاس `UserComponent` سرویس `UserService` در constructor تزریق میشود. | ||
4. **استفاده از سرویس**: در متد `ngOnInit`، متد `getUsers` سرویس فراخوانی میشود تا لیست کاربران دریافت شود. همچنین، متد `addUser` برای افزودن کاربر جدید به لیست استفاده میشود. | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. برای کارآموز توضیح دادیم که |
||
|
||
## pipe | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Title case |
||
پایپ (Pipe) در Angular یک ویژگی است که برای تبدیل دادهها قبل از نمایش در قالب نهایی استفاده میشود. این کاربرد اصلی آن است که اطلاعات را به یک فرمت مشخص یا به صورتی خاصی نمایش دهد، مثلا تبدیل یک تاریخ به فرمت خاص، نمایش مقادیر اعشاری به تعداد معین اعشار، تبدیل متن به حروف بزرگ یا کوچک و غیره. | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. یکم جملهبندیش نامفهومه. |
||
|
||
برای استفاده از پایپ در Angular، ابتدا باید پایپ مورد نظر را ایجاد کنید یا از پایپهای تعریف شده پیش فرض استفاده کنید. سپس آن را در قالب مورد نظرتان به صورت خاصی اعمال میکنید. | ||
|
||
**مثال:** | ||
|
||
اگر بخواهیم یک تاریخ را به فرمت تاریخ شمسی تبدیل کنیم، از پایپ `DatePipe` استفاده میکنیم: | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. date نیست تایمه There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. چی ؟ |
||
|
||
```html | ||
<p>تاریخ امروز: {{ today | date:'hh:mm:ss' }}</p> | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. زمان |
||
``` | ||
|
||
در این مثال، `today` یک متغیر در کامپوننت Angular است که تاریخ فعلی را نگهداری میکند. `date` یک پایپ است که تاریخ را به فرمت "hh:mm:ss" تبدیل میکند و نمایش میدهد. | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. تایم بشه همه اینا اینجا سوتی دادیم |
||
|
||
پایپها در Angular به طور گستردهای برای فراهم کردن قابلیتهای فرمتبندی و تغییر شکل دادهها استفاده میشوند و میتوانند به آسانی سفارشیسازی شوند یا از پایپهای پیشفرض Angular استفاده شود. | ||
|
||
```ts | ||
import { Pipe, PipeTransform } from '@angular/core'; | ||
|
||
@Pipe({ | ||
name: 'timeFormat' | ||
}) | ||
export class TimeFormatPipe implements PipeTransform { | ||
|
||
transform(value: Date,format: string): string { | ||
if (!value) return ''; | ||
|
||
// Extract hours, minutes, and seconds | ||
const hours = this.pad(value.getHours()); | ||
const minutes = this.pad(value.getMinutes()); | ||
const seconds = this.pad(value.getSeconds()); | ||
|
||
if (format === "hh:mm:ss") { | ||
// Return formatted time | ||
return `${hours}:${minutes}:${seconds}`; | ||
} | ||
else if (format === "ss:mm:hh") { | ||
return `${seconds}:${minutes}:${hours}`; | ||
} | ||
} | ||
|
||
private pad(value: number): string { | ||
return value.toString().padStart(2, '0'); | ||
} | ||
|
||
} | ||
|
||
``` | ||
در این پایپ، متد transform تاریخ را به عنوان ورودی دریافت کرده و به فرمت دریافتی تبدیل کرده و آن را برمیگرداند. | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. در این متد تاریخ رو میگیریم و زمان رو استخراج میکنیم و نمایش میدیم |
||
|
||
## Decorators | ||
پیش از آنکه به توضیح بخشهای اصلی Angular بپردازیم، بهتر است با مفهوم اساسی decorator که به طور گسترده از آن در تعاریف مختلف Angular استفاده میشود، آشنا شویم. | ||
|
||
decorator ها در Angular یک نوع خاص از توابع هستند که به شما امکان میدهند تا به کلاسها، متدها، ویژگیها یا پارامترها متادیتا اضافه کنید و رفتار آنها را override کنید. decorator ها در TypeScript به طور گستردهای برای تعریف ویژگیها و رفتارهای اجزای مختلف Angular استفاده میشوند. این توابع توسط `@` فراخوانی میشوند و ورودیهای خود را دریافت میکنند و تغییرات لازم را بر روی هدف خود اعمال میکنند. | ||
|
||
### Angular Decorators | ||
decoratorهای اصلی Angular عبارتند از: | ||
|
||
- **@NgModule**: برای تعریف ماژولهای Angular استفاده میشود. | ||
- **@Component**: برای تعریف کامپوننتها استفاده میشود. | ||
- **@Directive**: برای تعریف دستورالعملها استفاده میشود. | ||
- **@Pipe**: برای تعریف لولهها (فیلترها) استفاده میشود. | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. نامگذاری در متن یکپارچه نیست و باعث گیج شدن خواننده میشه. |
||
- **@Injectable**: برای تعریف سرویسها استفاده میشود. | ||
|
||
هر کدام از این decoratorها وظایف خاصی دارند و به شما کمک میکنند تا ویژگیهای خاصی را به اجزای برنامه اضافه کنید. | ||
|
||
- [decorator های پر استفاده در انگولار](https://medium.com/@madhavmahesh/list-of-all-decorators-available-in-angular-71bdf4ad6976) | ||
|
||
|
||
## Angular Modules | ||
انگولار یک فریمورک ماژولار است. ماژولاریتی خاصیتی است که میزان جداپذیری اجزا درون یک سیستم را اندازهگیری میکند، به طوری که این اجزا میتوانند به عنوان یک واحد مستقل عمل کنند و بدون وابستگی به یکدیگر کار کنند. در انگولار، ماژول یک واحد است که کامپوننتها، پایپها، دایرکتیوها و سرویسها را گروهبندی میکند. یک برنامه انگولار میتواند شامل چندین ماژول باشد. در هر برنامه انگولار حداقل یک ماژول وجود دارد. NgModule پیشفرض AppModule است و در فایل app.module.ts قرار دارد. وقتی برنامه را اجرا میکنید، این ماژول اجرا میشود. شما همچنین میتوانید عملکردها را از یک ماژول به ماژول دیگر import و export کنید. | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. جمله بندی پیجیدهست و وقتی به آخر جملات میرسی فراموش میکنی که اول جمله چه چیزی بوده و چه منظوری قراره بهت رسونده بشه. |
||
|
||
- [مطالعه درباره ماژولها در انگولار](https://medium.com/ngconf/an-introduction-to-ngmodules-6061241e75e1) | ||
- [نحوه استفاده از NgModule](https://youtube.com/watch?v=oqZ4-ULwfbc) | ||
|
||
## Templates and Data Binding | ||
|
||
### Interpolation | ||
|
||
در Angular، interpolation به معنی نشان دادن دادههای کامپوننت در قالب کامپوننت است. این کار با استفاده از `{{ }}` انجام میشود. | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. کلمات There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. done |
||
|
||
```html | ||
<h1>{{ title }}</h1> | ||
``` | ||
|
||
در این مثال، `title` یک property از کامپوننت است که مقدار آن در قالب نمایش داده میشود. لازم به ذکر است هر تغییر در مقدار `title` به طور خودکار توسط Angular تشخیص داده شده و در نتیجه قالب به صورت خودکار بروز میشود. (البته این در صورتی است که در change detection تغییری انجام نشده باشد که در بخشهای آینده از آن صحبت خواهیم کرد) | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. نامگذاری یکپارچه نیست. تمپلیت یا قالب؟ There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. مفهوم change detection در کجا توضیح داده شده؟ There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. done There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. done |
||
|
||
### Property Binding | ||
|
||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. درباره اینکه There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. این به نظرم نیاز نیست خیلی واضخه |
||
در Angular، میتوانید propertyهای کامپوننت را به عناصر قالب متصل کنید. این کار با استفاده از `[ ]` انجام میشود. | ||
|
||
```html | ||
<img [src]="imageUrl"> | ||
``` | ||
|
||
در این مثال، `imageUrl` یک property از کامپوننت است که به ویژگی `src` عنصر `<img>` متصل میشود. | ||
|
||
### Event Binding | ||
|
||
در Angular، میتوانید eventها را در قالب مدیریت کنید و به متدهای کامپوننت متصل کنید. این کار با استفاده از `( )` انجام میشود. | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. در اینجا درباره مفهوم ایونت بیشتر توضیح داده بشه. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. done |
||
|
||
```html | ||
<button (click)="handleClick()">Click me</button> | ||
``` | ||
|
||
در این مثال، وقتی کاربر بر روی دکمه کلیک میکند، متد `handleClick()` کامپوننت فراخوانی میشود. | ||
|
||
### Two way binding | ||
|
||
- [Demystifying Angular Two Way Binding](https://www.youtube.com/watch?v=vkmwbZV-ob8) | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. یک توضیحی بدیم که این چیه و چرا بهش نیاز داریم و بعد طرف رو بفرستیم یاد بگیره. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. done |
||
|
||
|
||
### angular routing | ||
ابزار قدرتمند انگولار برای جابهجایی بین صفحات مختلف استفاده میشود. | ||
|
||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. مثل کامنت قبل نیازه که لزوم روتینگ رو توجیه کنیم. |
||
- [مستندات روتینگ انگولار](https://angular.dev/guide/routing/common-router-tasks) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
متن Description تغییر کنه. یک متن فارسی باشه که توضیح میده تو اون داک چی میخوایم بگیم و اگر کمی طنز باشه هم مشکلی نداره.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
done